2011-01-03 12 views
47

rekordy w mojej bazy danych sąMongoDB Query By wybrać rekordy posiadające danego klucza

{"_id":"1","fn":"sagar","ln":"Varpe"} 

{"_id":"1","fn":"sag","score":"10"} 

{"_id":"1","ln":"ln1","score":"10"} 

{"_id":"1","ln":"ln2"} 

muszę zaprojektować zapytanie MongoDB znaleźć wszystkie rekordy, które mają dany klawisz.

Na przykład, jeśli przekażę ln jako parametr do zapytania, shuold zwróci wszystkie rekordy, w których kluczem jest ln. Rezultatem będzie

{"_id":"1","fn":"sagar","ln":"Varpe"} 

{"_id":"1","ln":"ln1","score":"10"} 

{"_id":"1","ln":"ln2"} 

Odpowiedz

84

Aby sprawdzić, czy klucz/pole istnieje w dokumencie, należy użyć operatora $exists.

Via powłoki MongoDB ...

db.things.find({ ln : { $exists : true } }); 
+6

w PyMongo: 'połączenie ['db'] ['kolekcja']. Find ({" klucz ": {'$ exists': True}})' – bahmait

6

miałem ten sam problem i

db.coll.find({"mykey":{'$exists': 1}}) 

pracował dla mnie

0
db.collection.find({ ln: { $exists: true} }); 

Operator $ rozmiar pasuje do każdej tablicy z liczba elementów określonych przez argument. Na przykład:

db.collection.find({ ln: { $exists: true, $size: 0 } }); 

$ rozmiar nie przyjmuje zakresów wartości. Aby wybrać dokumenty na podstawie pól o różnej liczbie elementów, utwórz pole licznika, które zwiększasz podczas dodawania elementów do pola.

Powiązane problemy