如何在Mongo中选择基于_id和其他字段的文档?

时间:2018-06-02 13:37:04

标签: mongodb mongodb-query

我是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的类型还是什么?

enter image description here

1 个答案:

答案 0 :(得分: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" } });