1
MongoDBとPythonを使ってルールエンジンを開発しています。 MongoDBのルールをルールデータベース "myrulesdb"に保存し、それを使って異なるコレクションの集約パイプラインを実行したいとします。私はパイプを印刷するとき、私は正しい文字列を取得していますmongoDBに集約パイプラインを保存するにはどうすればいいですか?
import pymongo
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client['myDB']
coll = db['myColl']
ruledb = client['myrulesdb']
rulecoll = ruledb['myrules']
rule1 = rulecoll.find_one({}, {"Rule":1, "_id":0})
pipe = rule1['Rule']
print(pipe)
data = coll.aggregate(pipeline=pipe)
:MongoDBの中に保存されたルールは
{
"_id" : ObjectId("57f46e843166d426a20d5e08"),
"Rule" : "[{\"$match\":{\"Name.First\":\"Sunil\"}},{\"$limit\":5}]",
"Description" : "You live long life"
}
Pythonのコードです。
[{"$match":{"Name.First":"Sunil"}},{"$limit":5}]
私は()関数を集約し、これを通過したときにしかし、それは私に次のエラー与える:データベースからのパイプラインを検索した後
data = coll.aggregate(pipeline=pipe)
in aggregate raise TypeError("pipeline must be a list")
TypeError: pipeline must be a list
を、どのように私はそれを()関数を集約するために渡すことができますか?