【发布时间】:2017-01-25 08:41:33
【问题描述】:
我有一个这样的集合:
db.records.save( {
name : "John Smith",
addresses : [ {
context : "home" ,
loc : [ 55.5, 42.3 ]
} ,
{
context : "work",
loc : [ -74 , 44.74 ]
}
]
} )
我已经创建了一个这样的索引:
db.records.createIndex( { "addresses.loc": "2d" } )
现在当我尝试进行如下查询时:
db.Company.findOne({ "stores.loc" : { $near :[55.5, 42.3]}})
我期望得到的是带有一系列地址的 john smite,只有相关地址,我得到的是带有所有地址的 john smite,所以我不知道。
我该如何解决这个问题?
【问题讨论】:
-
在一个文件中包含 John 的所有地址是否有任何具体原因?
-
因为所有这些位置都在一个文档中,所以它会在
[55.5, 42.3]附近找到文档并返回整个文档。也许考虑“扁平化”架构(即每个地址使用一个文档)。