我正在使用meteor来查询mongodb集合。现在这是我的查询,其中location是一个2dsphere索引。
messages.find({
location:
{
$geoWithin :{$centerSphere : [ [ longitude, latitude ] , radius ] }
}
});
如果'location'是一个包含2dsphere索引的数组,并且我想要任何数组包含radius
对longitude, latitude
内的元素的条目,我需要在此查询中更改什么?
答案 0 :(得分:4)
文档结构如
{
"_id" : ObjectId("544e65dc0d86a53a8b32f7d0"),
"locs" : [
{
"loc" : {
"type" : "Point",
"coordinates" : [
-71.97,
43.77
]
}
},
{
"loc" : {
"type" : "Point",
"coordinates" : [
-63.97,
48.77
]
}
}
]
}
如果使用
构建2dsphere索引> db.test.ensureIndex({ "locs.loc" : "2dsphere })
然后您可以执行所需的查询,例如
> db.test.find({
"locs.loc" : {
"$geoWithin" : { "$centerSphere" : [ [ longitude, latitude ] , radius ] }
}
}
这项工作是因为数组上的索引是多键的,并且将为文档的每个数组元素创建一个索引条目。