我正在尝试编写一个MongoDB查询,以在指定位置为中心的半径内搜索文档。
下面的查询有效。它找到所有在searching.coordinates
周围searching.radius
弧度内的文档。
但是,我想做的是将当前文档的allowed_radius
值添加到searching.radius
值中,以便允许的球体实际上更大。
如何构造这个查询以使这种情况成为可能?
现有查询:
collection.aggregate([
{
$project:{
location: "$location",
allowed_radius: "$allowed_radius"
}
},
{
$match: {
$and:
[
{ location: { $geoWithin: { $centerSphere: [ searching.coordinates, searching.radius ] }}},
{...},
...]
...}
]);
我想要做什么(伪查询):
collection.aggregate([
{
$project:{
location: "$location",
allowed_radius: "$allowed_radius"
}
},
{
$match: {
$and:
[
{ location: { $geoWithin: { $centerSphere: [ searching.coordinates, { $add: [searching.radius, $allowed_radius]} ] }}},
{...},
...]
...}
]);
location
字段进行比较”? - CodyBugsteingeoNear
只允许一个2dsphere
索引,而我的文档实际上有两个位置。所以这个答案很好,但在我的情况下它并不能完全解决问题。 - CodyBugstein