【问题标题】:How to select documents based on _id and another field in Mongo?如何根据_id和Mongo中的另一个字段选择文档?
【发布时间】:2018-06-02 21:46:21
【问题描述】:

我是 Mongo 的新手,我有收藏

{ 
    "_id" : "297637", 
    "polygon" : {
        "1" : {
            "direction5" : {
                "lat" : 40.73279100000004, 
                "lon" : -74.027161, 
                "delivery_fee" : NumberInt(300), 
                "delivery_estimate" : NumberInt(45), 
                "delivery_offered_to_diner_location" : false
            }
        }
    }
}

我希望查询选择所有具有 _ID=297637 AND POLYGON=1 的文档 表示选择 POLYGON=1 内的所有“direction1”、“direction2”、“direction3”等行

我试过了

{ $and: [ { "_id": "297637" }, { "polygon": "1" } ] }

但它没有显示任何结果。

可能是因为polygon1Object 的类型还是什么?

【问题讨论】:

  • 你能把你的文件贴在这里吗?
  • @mickl 添加.......

标签: mongodb mongodb-query


【解决方案1】:

您不能使用{ "polygon": "1" },因为此语句检查polygon 字段是否等于"1",而在您的文档中它是具有一个字段"1" 的嵌套对象。

在 MongoDB 中,所有 _id 字段都是唯一的,这意味着 db.col.find({_id: "297637"}) 只会给您一个文档。但是,如果您仍想检查 polygon 并获得零个或一个结果,您可以使用 $exists 运算符检查您的文档中是否存在路径 "polygon.1"

db.col.find({_id: "297637", "polygon.1": { $exists: true } })

您也可以使用$type 运算符检查polygon.1 是否为对象:

db.col.find({_id: "297637", "polygon.1": { $type: "object" } });

【讨论】:

    猜你喜欢
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 2015-07-28
    • 1970-01-01
    相关资源
    最近更新 更多