Объяснение запроса монго с условием ИЛИ - PullRequest
2 голосов
/ 14 марта 2019

У меня есть эти данные в моей базе данных

{ "_id" : ObjectId("5c89da093180684aba34c5b7"), "name" : "Allen", "age" : 24, "nicknames" : [ "kanky" ], "siblings" : [ ] }
{ "_id" : ObjectId("5c89da4b3180684aba34c5b8"), "name" : "Sonata", "age" : "30" }
{ "_id" : ObjectId("5c89da8f3180684aba34c5b9"), "name" : "Kaushik", "age" : "20" }
{ "_id" : ObjectId("5c89da8f3180684aba34c5ba"), "name" : "Stuart", "age" : "24" }
{ "_id" : "5c89da093180684aba34c5b7", "name" : "Allen", "age" : 24 }

Когда я запускаю этот запрос db.people.find({$or: [{name:"Allen"}, {age:24}]}), он не дает запись с name : Stuart, которая имеет age : 24.

Но если я выполню этот запрос db.people.find({$or: [{name:"Stuart"}, {age:24}]}), он будет работать как задумано.

Может кто-нибудь объяснить, как это работает? Я начинаю с mongodb, поэтому, возможно, это очень простой вопрос.

Спасибо

1 Ответ

1 голос
/ 14 марта 2019

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

Попробуйте выполнить это: -

db.people.find({$or: [{name:"Allen"}, {age: "24" }]})

Вы получите Стюарта с этим запросом.Я не вижу здесь ничего плохого, кроме разных типов данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...