pymongo クエリとドキュメントのリストがあるとしましょう。ドキュメントは、1 つ以上の pymongo クエリと一致する (または一致しない) 可能性があります。
例えば
ここに私の文書があります:
> db.my_collection.findOne()
{
"EmbeddedDoc" : {
"values" : [
NumberLong(1),
NumberLong(2)
]
},
"_id" : ObjectId("515407bbc118555eea07fea5"),
"some_other_value" : "Val",
"my_id" : NumberLong(42),
}
生の pymongo クエリのリストを次に示します (int のリストに関連付けられています)。
list_of_queries = [
({'EmbeddedDoc.values': 2}, [1, 3, 5])
({'some_other_value': 'H2G2'}, [6, 5])
({'some_other_value': 'Val'}, [10, 4])
({'my_id': {'$gte': 256}}, [3, 13, 2])
]
特定のドキュメントに一致するクエリについて、int のリストの連結を知りたいです。上記の場合、それは[1, 3, 5, 10, 4]
これまでに行ったことは、毎回データベースにクエリを実行することでした (ここでMyCollection
は mongoengine の継承に関するメソッドDocument
):
def get_list_of_int(self):
ints = []
for query, list_of_ints in list_of_queries:
if bool(MyCollection.objects(my_id=self.my_id, __raw__=query)):
ints.extend(list_of_ints)
return ints
ただし、これは毎回データベースにクエリを実行します。これは高速ですが ( にインデックスがあります) 、データベースにクエリを実行する代わりに、インスタンスがコード内の特定のクエリに一致するmy_id
かどうかを判断する手段があるかどうか疑問に思っていました(クエリのリストは任意に長くなる可能性があります)。Document