我是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" } ] }
但它没有显示任何结果。
也许是因为polygon
和1
是Object
的类型还是什么?
答案 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" } });