3

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

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

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)

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

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

4

1 回答 1

0

find()使用or没关系where()

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

于 2012-05-07T23:08:05.367 回答