我在我的数据库中有这些数据
{ "_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开始,所以可能是一个非常基本的问题。
谢谢
在不同的文档中,您有不同的年龄架构类型。对于Allen,您使用年龄的数字数据类型,对于Stuart,您使用字符串来存储年龄。我认为这就是问题所在。
试试这个: -
db.people.find({$or: [{name:"Allen"}, {age: "24" }]})
你会得到Stuart这个查询。除了不同的数据类型,我没有看到任何其他错误。