我有一个业务集合,分支作为嵌套文档,位置在mongoose中定义为type: [Number]
:
{
"_id" : ObjectId("5466f87edb96504c30e910db"),
"name" : "Microsoft",
"description" : "Microsoft Redmond",
"branch" : [
{
"name" : "Redmond",
"location" : [
-122.130137,
47.644702
],
"_id" : ObjectId("5466f87edb96504c30e910dd")
},
{
"name" : "Seattle",
"location" : [
-122.326241,
47.599146
],
"_id" : ObjectId("5466f87edb96504c30e910dc")
}
],
"tags" : [],
"__v" : 0
}
现在我尝试搜索离我当前位置最近的地方:
db.business.find(
{ "branch.location": { $near: [-122.326412, 47.623022], $maxDistance: 5} }
)
结果应该是西雅图顶部,但我得到的所有记录就像命令:db.business.find()
。
我做对了吗?
我想要的结果是:
"branch" : [
{
"name" : "Seattle",
"location" : [
-122.326241,
47.599146
],
"_id" : ObjectId("5466f87edb96504c30e910dc")
},
{
"name" : "Redmond",
"location" : [
-122.130137,
47.644702
],
"_id" : ObjectId("5466f87edb96504c30e910dd")
} ]
答案 0 :(得分:2)
maxDistance以米为单位,而点之间的距离远大于5米。如果您相应地估价(我假设您的意思是里程数),则查询应该有效。
此外,您的地点存储在单个文档中。 MongoDB不会根据距离对文档的数组进行排序。如果您将位置放在不同的文档中,他们可以按距离快乐地排序。