猿问

确定mongoengine文档是否与代码中的原始pymongo查询匹配

假设我有一个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(查询列表可以任意长)。


30秒到达战场
浏览 195回答 2
2回答
随时随地看视频慕课网APP

相关分类

Python
我要回答