带OR条件的mongo查询说明

问题描述 投票:2回答:1

我在我的数据库中有这些数据

{ "_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 : Stuartage : 24条目。

但是,如果我运行此查询db.people.find({$or: [{name:"Stuart"}, {age:24}]}),它按预期工作。

任何人都可以解释这是如何工作的?我从mongodb开始,所以可能是一个非常基本的问题。

谢谢

mongodb mongoose mongodb-query
1个回答
1
投票

在不同的文档中,您有不同的年龄架构类型。对于Allen,您使用年龄的数字数据类型,对于Stuart,您使用字符串来存储年龄。我认为这就是问题所在。

试试这个: -

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

你会得到Stuart这个查询。除了不同的数据类型,我没有看到任何其他错误。

© www.soinside.com 2019 - 2024. All rights reserved.