2015-01-14 3 views
2

Я пытаюсь использовать оператор $or, но он возвращает ошибку.

Мой код:

{db.hw1_1.find({ "name": { $in: ["kamatchi","kamala"] } }) 

Это возвращение ответ. Но этот запрос возвращает ошибку.

{db.hw1_1.find({ "name": { $or: ["kamatchi","kamala"] } }) 

Возвращает:

error: { 
$err: "can't canonicalize query: BadValue unknown operator: $or ", 
"code" : 1787 
} 

ответ

7

Оператор $in в основном является или состояние, но только в специализированном пути. Таким образом, вы можете использовать его как краткую форму для проверки списка значений либо как некоторый тип объекта, либо регулярное выражение.

С другой стороны $or более лаконична, так что это будет такой же, как $in запрос

db.hw1_1.find({ $or: [{ "name": "kamatchi" }, { "name": "kamala"} ] }) 

Так $in лучше проверить несколько значений от одного ключа. Подумайте о $or как о «списке запросов», которые рассматриваются отдельно, и только один из этих запросов должен быть удовлетворен.

+0

Спасибо, Нил. теперь я понимаю – user3535066

Смежные вопросы