简单问题:
如何在Node.js上使用mongoose进行地理空间查询的正确方法?
复杂故事:
我用mongoose创建了一个具有空间索引的Schema。
var MySchema = newSchema({
// skipped ...
location : {
type : [ Number ],
required : true,
index : '2d'
},
// skipped ...
});
我在表格中插入了3个文档。使用 db.mymodels.find({})
和 MyModel.find({});
,我可以使用mongo客户端和mongoose检索这些文档。
现在我尝试使用边界框进行地理空间查询。
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'
的提示。
我检查了一下,我的边界框格式正确,左下角然后右上角。
怎么办? 使用mongoose以正确的方式进行地理空间查询,并使用边界框?