2012-04-19 3 views
1

J'essaye de construire une requête mongoDB basée sur les dictionnaires de python. Le problème qu'une clé doit être unique dans les dicts. Voir l'exempleRequête MongoDB avec Python

données MongoDB:

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

code Python:

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

db.test.find(dict) 

montre une seule ligne avec col1=='bar'

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

Comment puis-je construire la requête droite MongoDB en utilisant dictionnaires (ou quoi que ce soit) qui n'a pas besoin d'avoir unique clés.

Merci!

Répondre

3

Vous cherchez des documents où 'col1' est 'foo' OU 'bar'?

Si oui, alors vous voulez db.test.find({'col1': {'$in': ['foo', 'bar']}});

Pour expliquer, cette requête correspond à des documents où la valeur de col1 est in la liste ['foo', 'bar'].

requêtes de pointe sont documentées ici: http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24in

+0

Eh oui , c'est correct. Merci pour ça :) – KennyPowers

1

Je pense que la solution pour vous est juste une façon simple, vous devez pousser chaque objet dans un dict et les stocker dans un tableau:

dict = [] 
your_obj = {'col1': 'foo'} 
dict.append(your_obj) 
dict.append({'col1': 'bar'}) 
for o in dict: 
    db.test.find(o)