为什么我的查询使用find()不返回任何文件?

时间:2016-04-11 19:35:44

标签: python mongodb mongodb-query pymongo

我想在mongo上查询以获得具有三个条件的所有文档: 在python代码中,我有一个动态值type,可以更改它可以有不同的值。我希望获得type的所有文档,并且不会定义字段deleteinappropriate

所以我就这样开始,在这里我称之为:

find_entry_based_on_url({"type": "Test"})

这是我定义的方法:

def find_entry_based_on_url(self, query):
    docs = self.mongo.db[self.collection_name].find(query , {"delete": {'$exists': False}} , {"inappropriate": {'$exists': False}})
    return docs

这不行,它什么都没有?你能帮我解决什么问题吗?

1 个答案:

答案 0 :(得分:0)

你做错了,find的第二个参数是投影文件。同样在PyMongo中,文档是常规的Python字典,这意味着它有可变性,因此您可以在查询中添加其他键。

from copy import deepcopy #  You need to make a deepcopy of original query


def find_entry_based_on_url(self, query):        
    q = deepcopy(query)
    extra_keys = ['delete', 'inappropriate']
    for key in extra_keys:
        q[key]['$exists'] = False
    return self.mongo.db[self.collection_name].find(q)