我的结构文件集合如下
{ _id: ObjectId("54723e44ec73a702fc979fc9"),
Start: { type: "Point", coordinates: [ -0.15261409999993703, 51.4428311 ] },
End: { type: "Point", coordinates: [ -0.1258020000000215, 51.44695 ] }
}
我正在运行以下查询以尝试查找文档,其中起点是一个点的2000个单位,结尾是一个点的1个单位。
"Start" :
{ "$near" :
{ "$geometry" :
{ "type" : "Point",
"coordinates" : [-0.12580200000002151, 51.44695]
}
},
"$maxDistance" : 2000.0
},
"End" :
{ "$near" :
{ "$geometry" :
{ "type" : "Point",
"coordinates" : [-0.12580200000002151, 51.44695]
}
},
"$maxDistance" : 1.0
}
当我运行查询时,它总是返回文档,就好像它正在执行或。因此,从一个点OR结束开始是x个单位是从一个点开始的x个单位。因此,如果我在以下两个文档上运行它,它将返回我只希望返回第一个文档的位置。
{ _id: ObjectId("54723e44ec73a702fc979fc9"),
Start: { type: "Point", coordinates: [ -0.15261409999993703, 51.4428311 ] },
End: { type: "Point", coordinates: [ -0.1258020000000215, 51.44695 ] }
}
{ _id: ObjectId("54724f0cec73a70c383a27d4"),
Start: { type: "Point", coordinates: [ -0.15261409999993703, 51.4428311 ] },
End: { type: "Point", coordinates: [ -0.09553900000003068, 51.427025 ] }
}
我相信我应该能够像
那样做http://blog.mongodb.org/post/50984169045/new-geo-features-in-mongodb-2-4
"此外,我们可以在同一个复合索引中包含多个2dsphere索引。这允许查询如下:“查找距离JFK 50英里内的起始位置的路线,以及距离YYC 100英里内的终点位置”。"
澄清。上面显示的查询应该在START位置$ near点和END位置$ near点附近进行AND查询。但它实际上似乎正在做的是START位置$接近点或END位置$接近点。
如何在单个文档中对两个$ near查询进行AND查询?