盒子地理空间查询中的猫鼬无法正常工作
Posted
技术标签:
【中文标题】盒子地理空间查询中的猫鼬无法正常工作【英文标题】:mongoose within box geo-spatial query does not work correctly 【发布时间】:2012-05-14 21:49:40 【问题描述】:简单的问题: 在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)
This question 说你应该使用 find() 而不是 where,
但是当我尝试用 where 替换 find 时,出现错误 'need an area > 0'
我检查了,我的边界框格式正确,左下角然后右上角。
怎么办? 使用 mongoose 使用边界框进行地理空间查询的正确方法是什么?
【问题讨论】:
您生成的查询是什么样的? @SergioTulentsev 如何打印生成的查询? 啊,我以为你在使用 Rails。用节点,我不知道:) 【参考方案1】:使用find()
或where()
都没关系。
您是否介意通过启用日志记录并检查您的控制台来发布 mongoose 向数据库发送的内容:mongoose.set('debug', true)
【讨论】:
谢谢谢谢谢谢!我注意到我的坐标数组由字符串而不是数字 '78.0' 而不是 78 组成,在通常的调试过程中我没有注意到它,只是现在有了你的建议! 我使用node-inspector,它使用chrome的开发工具调试nodejs服务器应用程序,我只是注意到数字显示为蓝色,而字符串显示为红色,但字符串没有任何'或'字符在他们周围。该死的!以上是关于盒子地理空间查询中的猫鼬无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
我目前有一个问题,我试图在 grapql 中查询嵌套的猫鼬对象,但似乎无法弄清楚