Подтвердить что ты не робот

MongoDB - несколько $или операций

Как я могу использовать несколько $или операций? Пока я пробовал следующее, но он молча игнорирует второй $или.

{
  $or: [{a: 2}, {a: 3}], 
  $or: [{b: 5}, {b: 4}]
}

Я предполагаю, что это потому, что я использую два идентичных ключа. Есть ли способ обойти это?

4b9b3361

Ответ 2

$и не будет выполнять эту работу, так как второй $или не будет проверять, не сработает ли первый.

На странице руководства Монго:

Оператор $и оператор использует оценку короткого замыкания. Если первое выражение (например,) оценивается как false, MongoDB не будет оценивать остальные выражения.

Вложенные $или, однако, должны сделать трюк:

db.things.find({$ или: [{$ или: [{'a': 1}, {'b': 2}]}, {$ или: [{'a': 2}, {'b': 3}]}]})

Ответ 3

Для нескольких, как в sql, мы используем $in и не используем $nin vc - это наше имя коллекции здесь. Мы находим, что эта строка содержит cpu или memo.

db.collection('vc').find({   "name" :   { $in: [ /cpu/, /memo/ ]   }     }

Ответ 4

Вы не можете вложить несколько $или операторов.

Это описано здесь:

http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24or

Кроме того: ваш запрос имеет смысл.

Если вы пытаетесь запросить для a 2 или 3, а b - 5 или 4:

{a: {$ in: [2,3]}, b: {$ in: [4,5]}}

Пожалуйста, не пытайтесь изобретать новый синтаксис.