框地理空间查询中的猫鼬无法正常工作

时间:2012-05-05 17:30:28

标签: mongodb geospatial mongoose bounding-box mongodb-query

简单问题:
在nodejs上使用mongoose进行地理空间查询的正确方法是什么?

复杂的故事:
我创建了一个带有空间索引的猫鼬的Schema

var MySchema = newSchema({
// skipped ...
    location : {
        type : [ Number ],
        required : true,
        index : '2d'
    },
// skipped ...
});
然后我将3个文件插入表中。 我可以用mongo客户端和mongoose检索这些文件 使用db.mymodels.find({})MyModel.find({});

现在我尝试使用边界框进行地理空间查询 mongo客户端运行正常

db.mymodels.find({location: {$within: {$box: box}}})

在框内只返回预期的一个结果 另一方面,Mongoose返回所有三个结果

query = MyModel.where({location: {$within : {$box : box}}});
query.run(cb)

This question说你应该使用find()而不是where, 但当我尝试用where替换find时,我收到错误'need an area > 0' 我检查过,我的边界框格式正确,左下角然后右上角。

怎么办? 使用mongoose使用边界框进行地理空间查询的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

如果您使用find()where(),则无关紧要。

您是否可以通过启用日志记录并检查控制台来发布mongoose发送到数据库的内容:mongoose.set('debug', true)