假设我有一个 pymongo 查询列表和一个文档。该文档可以(或不)由一个或多个 pymongo 查询匹配。
例如
这是我的文件:
> db.my_collection.findOne()
{
"EmbeddedDoc" : {
"values" : [
NumberLong(1),
NumberLong(2)
]
},
"_id" : ObjectId("515407bbc118555eea07fea5"),
"some_other_value" : "Val",
"my_id" : NumberLong(42),
}
这是原始 pymongo 查询的列表(与一些整数列表相关联):
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])
]
对于与特定文档匹配的查询,我想知道整数列表的串联。在上述情况下,这将是[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
实例是否与代码中的特定查询匹配,而不是查询数据库(查询列表可以任意长)。