Запрос работает фактически так, как и должен.Вопрос неправильный.
Вот как выглядит то, что я пробовал и как оно работает!
Данные:
> db.demo.find()
{ "_id" : 1, "age" : 38, "mgmt" : "no", "salary" : 100 }
{ "_id" : 2, "age" : 45, "salary" : 200, "mgmt" : "no" }
{ "_id" : 3, "age" : 50, "salary" : 250, "mgmt" : "no" }
{ "_id" : 4, "age" : 51, "salary" : 75, "mgmt" : "yes" }
{ "_id" : 5, "age" : 45, "salary" : 75, "mgmt" : "no" }
Запрос на получение (Возраст> 40 ANDЗарплата> 200) ИЛИ mgmt = 'да'
> db.demo.find( { $or: [ { age: {$gt:40}, salary:{$gt:200} }, {mgmt: 'yes'} ] })
{ "_id" : 3, "age" : 50, "salary" : 250, "mgmt" : "no" }
{ "_id" : 4, "age" : 51, "salary" : 75, "mgmt" : "yes" }
Запрос на получение (Возраст> 40) ИЛИ (Зарплата> 200) ИЛИ mgmt = 'да'
> db.demo.find( { $or: [ { age: {$gt:40}}, {salary:{$gt:201} }, {mgmt: 'yes'} ] })
{ "_id" : 2, "age" : 45, "salary" : 200, "mgmt" : "no" }
{ "_id" : 3, "age" : 50, "salary" : 250, "mgmt" : "no" }
{ "_id" : 4, "age" : 51, "salary" : 75, "mgmt" : "yes" }
{ "_id" : 5, "age" : 45, "salary" : 75, "mgmt" : "no" }
Всеони работают как надо.Большой!