找到$ near location错误的结果

时间:2014-11-15 07:28:58

标签: mongodb mongoose

我有一个业务集合,分支作为嵌套文档,位置在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")
            }            ]

1 个答案:

答案 0 :(得分:2)

maxDistance以米为单位,而点之间的距离远大于5米。如果您相应地估价(我假设您的意思是里程数),则查询应该有效。

此外,您的地点存储在单个文档中。 MongoDB不会根据距离对文档的数组进行排序。如果您将位置放在不同的文档中,他们可以按距离快乐地排序。