MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongoose получава документи, съответстващи на масива

Докато разбирате, че съвпадате с ObjectId, а не с нещо в референтната колекция, можете да използвате $in оператор:

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

Разбира се, това са вашите действителни стойности на ObjectId.

Но ако наистина имате предвид документ, който има точно този масив, тогава просто предавате масива:

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

И ако трябва да има и двата елемента, но може да има и други, тогава в момента трябва да използвате израз:

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

Но от версия 2.6 и нататък можете правилно да използвате $all оператор, за да направи ефективно същото:

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

Другата форма съвпада само с тези два елемента, но в произволен ред. Така че има два подхода:

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

Това използва логически $or за да кажем, че масивът трябва да е точен, но може да бъде подреден така или иначе. И другият подход:

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

Така че това ще използва $size за да се уверите, че когато масивът съдържа и двата съвпадащи елемента, той също има само два елементи. Което е по-хубав синтаксис от използването на $or , особено за по-големи масиви.

И в бъдещите издания, както беше споменато, това става още по-чисто:

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

Това до голяма степен обхваща всяка интерпретация




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как мога да разреша Неуспешно настройване на сокети по време на стартиране, когато стартирам сървър на mongodb?

  2. Query MongoDb агрегат обединява две колекции

  3. Mongo дава грешка с дублиран ключ в полето _id_ в приложението Meteor

  4. C# Mongodb. Сумарно поле за всички документи

  5. Проста страница за вход в nodejs, използвайки експрес и паспорт с mongodb