У меня есть коллекция под названием StudentCollection с двумя документами, приведенными ниже,MongoDB и сравнение Сбой
> db.studentCollection.find().pretty()
{
"_id" : ObjectId("52d7c0c744b4dd77efe93df7"),
"regno" : 101,
"name" : "Ajeesh",
"gender" : "Male",
"docs" : [
"voterid",
"passport",
"drivinglic"
]
}
{
"_id" : ObjectId("52d7c6a144b4dd77efe93df8"),
"regno" : 102,
"name" : "Sathish",
"gender" : "Male",
"dob" : ISODate("2013-12-09T21:05:00Z")
}
Почему ниже запрос возвращает документ, если он не отвечает критериям, которые я дал в команде поиска. Я знаю, что это плохой & глупый запрос для И сравнение. Я пробовал это с MySQL, и он не возвращает ничего, как ожидалось, но почему NOSQL делает проблему. Надеюсь, он рассматривает последнее поле для сравнения.
> db.studentCollection.find({regno:101,regno:102}).pretty()
{
"_id" : ObjectId("52d7c6a144b4dd77efe93df8"),
"regno" : 102,
"name" : "Sathish",
"gender" : "Male",
"dob" : ISODate("2013-12-09T21:05:00Z")
}
Может ли кто-нибудь объяснить, почему Mongodb работает таким образом?
Как указал Кеннет, причиной, по которой вы получаете только один результат, является то, что объект JavaScript, созданный для вашего запроса, может иметь только одно значение для regno. Вы можете продемонстрировать это, введя в оболочку mongo JavaScript: a = {regno: 10, regno2: 20}, а затем введите b = {regno: 10, regno: 20} и увидите разницу. – nachbar