MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Mongoose pobiera dokumenty pasujące do tablicy

Dopóki zdajesz sobie sprawę, że pasujesz do ObjectId, a nie do niczego w kolekcji, do której się odwołujesz, możesz użyć $in operator:

db.collection.find({ "members": { "$in": [ "some id 1", "some id 2" ] } })

Gdzie oczywiście są to twoje rzeczywiste wartości ObjectId.

Ale jeśli naprawdę masz na myśli dokument, który ma dokładnie taką tablicę, po prostu przekazujesz tablicę:

db.collection.find({ "members": [ "some id 1", "some id 2" ] })

A jeśli musi mieć oba elementy, ale może mieć inne, obecnie musisz użyć $i wyrażenie:

db.collection.find({ "$and": [ 
    { "members": "some id 1" },
    { "members": "some id 2" } 
]})

Ale od wersji 2.6 i później można prawidłowo używać $wszystkie operatora, aby skutecznie robić to samo:

db.collection.find({ "members": { "$all": [ "some id 1", "some id 2" ] } })

Druga forma to dopasowanie tylko tych dwóch elementów, ale w dowolnej kolejności. Są więc dwa podejścia:

db.collection.find({ "$or": [
    { "members": [ "some id 1", "some id 2" ] },
    { "members": [ "some id 2", "some id 1" ] }
]})

Używa logicznego $or powiedzieć, że tablica musi być dokładna, ale może być ułożona w dowolny sposób. I inne podejście:

db.collection.find({ "$and": [ 
    { "members": "some id 1" },
    { "members": "some id 2" }
    { "members": { "$size": 2 } }
]})

Więc użyto by $size aby upewnić się, że gdy tablica zawiera oba elementy, które pasują, to również ma tylko dwa elementy. Co jest ładniejszą składnią niż użycie $or , szczególnie w przypadku większych tablic.

A w przyszłych wydaniach, jak wspomniano, stanie się to jeszcze czystsze:

db.collection.find({ "$and": [ 
    { "members": { "$all": [ "some id 1", "some id 2" ] } },
    { "members": { "$size": 2 } }
]})

To dość dużo obejmuje każdą interpretację




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Zapytanie geoprzestrzenne MongoDB z $not

  2. Agregacja w Golang mgo dla Mongodb

  3. Mongoose - znajdź ostatnią wiadomość od każdego użytkownika

  4. Mongo DB:Wstaw wszystkie dokumenty po ostatnim znanym

  5. Jak przekonwertować string ze znakami w int dla całej kolekcji?