MongoDB - найти документы, в которых несколько свойств соответствуют условию в пределах одного элемента массива - PullRequest
0 голосов
/ 27 января 2019

Документ:

{ 
    "_id" : ObjectId("5c4dd63bd76f061ef0dbcf28"), 
    "fruits" : [
        {
            "color" : "red", 
            "name" : "strawberry"
        }, 
        {
            "color" : "green", 
            "name" : "cucumber"
        }
    ]
}

Запрос на совпадение:

{ "fruits.name": "strawberry", "fruits.color": "green" }

Без использования платформы агрегации, как я могу сказать MongoDB возвращать только те документы, для которых соответствует один из элементов массива "fruits"оба условия в запросе (поэтому в моем случае результатом будет отсутствие документов)?

1 Ответ

0 голосов
/ 27 января 2019

Вам необходимо использовать $elemMatch оператор запроса, чтобы соответствовать нескольким условиям внутри массива

db.collection.find({
  "fruits": {
    "$elemMatch": {
      "name": "strawberry",
      "color": "green"
    }
  }
})
...