假设我有一个pymongo查询清单和一个文件。该文档可以被一个或多个pymongo查询匹配(或不匹配)。
例如
这是我的文件:
> db.my_collection.findOne()
{
"EmbeddedDoc" : {
"values" : [
NumberLong(1),
NumberLong(2)
]
},
"_id" : ObjectId("515407bbc118555eea07fea5"),
"some_other_value" : "Val",
"my_id" : NumberLong(42),
}
这是原始pymongo查询的列表(与一些ints列表相关):
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实例是否与代码中的特定查询匹配,而不是查询db(查询列表可以任意长)。
相关分类