2016-04-11 6 views
0

私は3つの条件ですべてのドキュメントを取得するためにmongoのクエリを作成したいと思います: 私は動的値typeを持っています。これは異なる値を持つことができます。そして、私はtypeですべての文書を取得したいとしており、フィールドdeleteinappropriateは定義されていません。find()を使用している私のクエリがドキュメントを返さないのはなぜですか?

だから私はこのように始めた、ここで私はそれを呼び出す:ここ

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

はい構文が間違っています。それは私が今あなたに話すことができるすべてです。実際の解決策が必要な場合は、あなたが意味することを説明する必要があります*これは動作していません*また、あなたの質問のタイトルを編集することを検討してください。 – styvane

+0

@ user3100115私はそれをコードでもテストしましたが、ターミナルでいくつかの方法を試みましたが、何も与えません –

+0

'find'メソッドで' query'とは何ですか?エラーメッセージとは何ですか?トレースバック? – styvane

答えて

0

findの2番目の引数が間違っています。投影ドキュメントです。また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) 
関連する問題