сопоставить элемент в массиве mongodb - PullRequest
3 голосов
/ 13 апреля 2011

У меня есть коллекция следующим образом.

{
 "name" : "pqr" ,
 "loc" : 
   [ 
    {"area" : "c" , "country" : "d"},
    {"area" : "w" , "country" : "r"}
   ]
}

Я хочу сделать такое совпадение, которое соответствует только первому элементу массива loc

, что означает, что

  1. дает область как c или страну d, затем возвращает документ.
  2. дает область как w или страну как r, тогда не возвращает элемент

соответствует только первому элементу массива mongo

Возможно ли это на монго?

если кто-то знает, пожалуйста, ответ

Спасибо

1 Ответ

3 голосов
/ 13 апреля 2011

Таким образом, если вы хотите вернуть только первый соответствующий элемент, вы должны использовать limit(n) и запросить его следующим образом:

1. дает область как c или страну d, тогда он возвращает документ.1006 * db.items.find( { $or : [ {"loc.area": "c" } , {"loc.country ": "d" } ] } ).limit(1); 2. дает область как w или страну как r, затем не возвращает элемент

db.items.find( { $or : [ {"loc.area":  { "$ne" : "w" } }, 
                         {"loc.country": { "$ne" : "r" } } ] } ).limit(1);

Если вы хотите искать только в первых элементах вложенногоВ массиве вы можете сделать это, используя позиционный оператор, добавив .0. -> loc.0.area.

Обновление: Сначала я неправильно понял ваш вопрос.Теперь я вижу, что вы ищете loc.0.area .

...