我想在mongo上查询以获得具有三个条件的所有文档:
在python代码中,我有一个动态值type
,可以更改它可以有不同的值。我希望获得type
的所有文档,并且不会定义字段delete
和inappropriate
。
所以我就这样开始,在这里我称之为:
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
这不行,它什么都没有?你能帮我解决什么问题吗?
答案 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)