1

Python の辞書に基づいて mongoDB クエリを構築しようとしています。キーが dict で一意でなければならないという問題。例を見る

MongoDB データ:

{
        "_id" : ObjectId("4dcd3ebc9278000000005158"),
        col1 : 'foo'
}
{
        "_id" : ObjectId("4dcd3ebc9278000000005159"),
        col1 : 'bar'
}

Python コード:

dict = {'col1': 'foo'}
dict.update({'col1': 'bar'})

db.test.find(dict)

を含む 1 行のみを表示しますcol1=='bar'

>>> dict
{'col1': 'bar'} 

一意のキーを持つ必要のない辞書 (または何か) を使用して、適切な MongoDB クエリを作成するにはどうすればよいですか。

ありがとう!

4

3 に答える 3

3

「col1」が「foo」または「bar」であるドキュメントを探していますか?

もしそうなら、あなたはしたいですdb.test.find({'col1': {'$in': ['foo', 'bar']}});

説明すると、そのクエリは、 の値が list であるドキュメントに一致col1inます['foo', 'bar']

高度な mongodb クエリは、http ://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24in で文書化されています。

于 2012-04-19T09:25:33.103 に答える
1

あなたの解決策は簡単な方法だと思います。各オブジェクトをdictにプッシュし、それらを配列に保存する必要があります。

dict = []
your_obj = {'col1': 'foo'}
dict.append(your_obj)
dict.append({'col1': 'bar'})
for o in dict:
    db.test.find(o)
于 2012-04-19T09:34:00.450 に答える
0

別の方法は$exists、mongodb で演算子を使用することです。

query = {'col1': {'$exists': 'true'}}
db.test.find(dict)

この方法では、col1が取り得る値を指定する必要はありません。

于 2020-10-01T03:31:47.803 に答える