我的数据库中有这些数据
{ "_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
的{{1}}项。
但是,如果我运行此查询age : 24
,它将按预期运行。
谁能解释这是如何工作的?我从mongodb开始,所以这可能是一个非常基本的问题。
谢谢
答案 0 :(得分:1)
您在不同的文档中具有不同的年龄架构类型。对于艾伦(Allen),您使用数字数据类型作为年龄;对于斯图尔特(Stuart),您使用字符串存储年龄。我认为那就是问题。
尝试运行此:-
db.people.find({$or: [{name:"Allen"}, {age: "24" }]})
您将通过此查询获取Stuart。除了不同的数据类型,我在这里看不到其他任何错误。