具有OR条件的mongo查询的说明

时间:2019-03-14 07:46:26

标签: mongodb mongoose mongodb-query

我的数据库中有这些数据

{ "_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开始,所以这可能是一个非常基本的问题。

谢谢

1 个答案:

答案 0 :(得分:1)

您在不同的文档中具有不同的年龄架构类型。对于艾伦(Allen),您使用数字数据类型作为年龄;对于斯图尔特(Stuart),您使用字符串存储年龄。我认为那就是问题。

尝试运行此:-

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

您将通过此查询获取Stuart。除了不同的数据类型,我在这里看不到其他任何错误。