我有一组结构如下的文件
{ _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
}
当我运行查询时,它总是返回文档,就好像它正在执行或一样。所以 start 是从一个点开始的 x 个单位,或者 end 是从一个点开始的 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 索引。这允许进行如下查询:“查找起点位置在肯尼迪国际机场 50 英里范围内,终点位置在 YYC 100 英里范围内的路线”。
为了澄清。上面显示的查询应该在 START location $near point AND END location $near point 上执行 AND 查询。但它实际上似乎在做的是 START location $near point OR END location $near point。
如何对单个文档中的两个 $near 查询执行 AND 查询?