【发布时间】:2016-07-13 17:13:22
【问题描述】:
我有一个在 MongoDB 中运行良好的基本地理空间查询。似乎应该很容易应用 $not 来获得补充......但这对我不起作用。是简单的用户错误吗?或者 MongoDB 不能在概念上处理这个查询?我在documentation 中找不到任何此类限制。
工作查询(正确找到中心 10 英里内的 2 个城市):
db.customers.find({ "location" : { $within : { $center : [[-117.15,32.72],0.15] } } })
尝试补全查询(期望结果是 10 英里范围内的 1 个城市):
db.customers.find({ "location" : { $not : { $within : { $center : [[-117.15,32.72],0.15] } } } })
error: {
"$err" : "missing geo field (location) in : {location: { $not: { $within: { $center: [ [ -117.15, 32.72 ], 0.15 ] } } } }",
"code" : 13042
}
对于想要复制/粘贴查询以查看错误的任何人,这里有一小部分示例数据:
db.customers.ensureIndex( { "location" : "2d" } )
db.customers.save({"city":"La Mesa","state":"CA","location":[ -117.02,32.76 ]})
db.customers.save({"city":"Chula Vista","state":"CA","location":[ -117.08,32.63 ]})
db.customers.save({"city":"Mexico City","state":"Mexico","location":[-99.133244,19.4326]})
(我使用的是 MongoDB 1.8.2,以防万一。)
【问题讨论】:
-
这是一个艰难的...我还建议在 mongodb-user google 组上留言...
-
是的,我也推荐它..这是一个很好的问题..
-
这样的查询是不可能的,但它是一个已知的增强请求。为了将来参考,MongoDB Google Group 上的这些线程讨论了这个问题。 [使用 $and 进行地理查询][1] [地理查询][2] [1]:groups.google.com/group/mongodb-user/browse_thread/thread/… [2]:groups.google.com/group/mongodb-user/browse_thread/thread/… 救命!我不知道如何格式化这些链接。
标签: mongodb geospatial