Arrays $geoNear带条件参数
我在record collection Mongodb(3.4)中有如下文档:-Arrays $geoNear带条件参数,arrays,mongodb,geolocation,operators,Arrays,Mongodb,Geolocation,Operators,我在record collection Mongodb(3.4)中有如下文档:- { "_id" : ObjectId("592d0c78555a7436b0883960"), "userid" : 7, "addresses" : [ { "apporx" : 50.0, "loc" : [ -73.98137109999999, 40.7476039 ] }
{
"_id" : ObjectId("592d0c78555a7436b0883960"),
"userid" : 7,
"addresses" : [
{
"apporx" : 50.0,
"loc" : [
-73.98137109999999,
40.7476039
]
},
{
"apporx" : 15.0,
"loc" : [
-73.982002,
40.74767
]
},
{
"apporx" :10.0,
"loc" : [
-73.9819567,
40.7471609
]
}
]
}
我使用以下查询在此集合上创建了二维索引:-
db.records.createIndex({ "addresses.loc": "2d" })
我想在条件运算符之后使用$geoNear命令,但$geoNear必须是聚合管道中的第一个。是否有其他方法,以便我可以在50到100之间应用条件“addresses.loc”像“addresses.loc”。应用此条件后,从“addresses”数组$geonear中获取的任何元素都将应用于该元素。您可以为该元素提供一个“query”参数。由于这是在一个聚合管道中,您甚至可以在稍后的阶段以不同的效果执行$match
。但是“你期望的结果是什么?”。值得注意的是,您的“位置”位于文档中的一个数组中,因此,$geoNear
中的查询选项和位置参数的组合可能不会返回您期望的结果。例如,“near”查询部分可能离某个数组元素最近。但是,实际上没有办法使任何条件与指定“最近数组元素”上的条件的“近”部分“组合”。这在以后的$match
中是可能的,但其效果是“过滤”,而不是强制选择不同的数组元素作为最近的数组元素。所以这取决于你在问什么。为了明确起见,您应该包含多个示例文档,并显示您希望从某些给定条件返回的预期结果。