MongoDB 在对象数组中找到 $near

MongoDB find $near in object array

我开始使用 MongoDB API,因为我们使用的是 Azure Cosmos DB。 尝试使用 MongoDB 中的 $near 和基本结构 {key:"A": localtion:{type:"Point", coordinates:[1,2]}} 的示例,效果很好。问题是当我需要使用位置数组时。

我正在尝试执行此查询但没有结果。我做错了什么?

db.places.insert( {
    id:1,
    name: "AAAAAAAAAAA",
    locals:[
        {
        location: { type: "Point", coordinates: [-73.9928, 40.7191 ] },
        }
    ],
   category: "Parks"
} );   
db.places.insert( {
    id:2,
    name: "BBBBBBBBBBB",
    locals:[
        {
        location: { type: "Point", coordinates: [-73.9928, 40.7193 ] },
        }
    ],
   category: "Parks"
} );
db.places.insert( {
    id:3,
    name: "CCCCCCCCCCCCC",
    locals:[
        {
        location: { type: "Point", coordinates: [  -73.9375, 40.8303 ] },
        }
    ],
   category: "Parks"
} );
//Create index
db.places.createIndex({ "locals.location" : "2dsphere" })
//Query without result
db.places.find(
   {
     "locals.location":
       { $near:
          {
            $geometry: { type: "Point",  coordinates: [ -73.9375, 40.8303 ] },
            $minDistance: 1000,
            $maxDistance: 5000
          }
       }
   }
)

这些地方有很多当地人,所以我可以在里面放很多东西。

希望有人能帮助我。

干杯。

根据我对你的样本数据的测试,也得到了与你相同的空结果。据我所知,CosmosDB 仅支持 MongoDB API 的一个子集,并将请求转换为 CosmosDB SQL 等效项。 CosmosDB 有一些不同的行为和结果。但是 CosmosDB 有责任改进他们对 MongoDB.

的模拟

当然,如果您想要完整的 MongoDB 功能支持,您可以在 Azure 上添加反馈 here to submit your requirements or consider using MongoDB Atlas