【问题标题】:Explanation of mongo query with OR condition带 OR 条件的 mongo 查询说明
【发布时间】:2019-08-05 00:58:55
【问题描述】:

我的数据库中有这些数据

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

谢谢

【问题讨论】:

    标签: mongodb mongoose mongodb-query


    【解决方案1】:

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

    尝试运行这个:-

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

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

    【讨论】:

    • 是的,这就是问题所在。你知道即使我在查询中将年龄作为字符串传递,它也会返回数字的条目,但反过来也不正确?
    • 我认为它不会那样做。请尝试运行仅将年龄设置为字符串 24 的查询,它不应返回 Allen
    • 我的错。它没有。我很粗心,错过了 OR 条件。感谢您的帮助。
    猜你喜欢
    • 2012-03-04
    • 2021-12-27
    • 2012-12-04
    • 2020-08-15
    • 1970-01-01
    • 2016-10-10
    • 2011-03-18
    • 2018-10-04
    • 2011-09-10
    相关资源
    最近更新 更多