【发布时间】:2014-07-14 06:13:10
【问题描述】:
我正在尝试让这段代码工作(节点+猫鼬)
model.find({
$and: [
{ 'location': { $near: { $geometry: {type: 'Point', coordinates: [lat, long]} }, $maxDistance: 1000 }},
{'status': { $size: 1 }}
]
},
继续努力
找不到任何特殊索引:2d(需要索引)、2dsphere(需要 索引),对于: { $and: [ { location: { $near: { $geometry: { type: “点”,坐标:[ 12.5386, 41.884 ] } },$maxDistance:1000 } }, { 状态:{ $size: 1 } } ] }
我确实有我的索引与 mongo
{
"location" : "2dsphere"
}
我错过了什么? 非常感谢。
编辑:添加文档结构
{
"name" : "Frag",
"desc" : "Frag",
"host" : ObjectId("534047663164711f7e7a952f"),
"_id" : ObjectId("535d7d8b454017f874de2d42"),
"status" : [
{
"state" : "created",
"_id" : ObjectId("535d7d8b454017f874de2d43"),
"date" : ISODate("2014-04-27T21:58:35.406Z")
}
],
"users" : [
ObjectId("534047663164711f7e7a952f")
],
"location" : [
32.0652823,
34.7767135
],
"__v" : 0
}
【问题讨论】:
-
$and 隐含在所有 MongoDB 查询中。您无需将其指定为包装器。也许在您的问题中显示文档。
location真的是顶级字段吗? -
感谢您的帮助,已添加到问题中
-
当然。 “位置”在哪里?它不在您的文档中。因为这看起来你在这里有很多参考,它实际上是在另一个集合中吗?即使您指定了其他集合文档的正确路径,除非嵌入了该数据,否则您无法执行此查询。似乎您需要了解 Mongoose populate 的局限性以及它实际上可以做什么。或者不按照可能的情况去做。
-
哎呀我的坏。错误的复制粘贴,但我确实注意到我的一些文件缺少“位置”,这可能是问题吗?虽然如果我在 find 中不包含“status.size”会很奇怪,但它工作得很好。