我有一个像这样的集合:
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和所有地址,所以我不知道。
如何解决这个问题?
如果你可以改变你的模式,在一个文档中获取一个地址,然后从那里获得最近的节点,这是可以修复的:
db.records.save( {
name : "John Smith",
address_context: "home",
address_loc : [ 55.5, 42.3 ]
} )
db.records.save( {
name : "John Smith",
address_context: "work",
address_loc : [ -74 , 44.74 ]
} )
现在在address_loc和查询上创建索引,您将获得相关的最近节点