【问题标题】:mongodb geospatial query for multyindex data多索引数据的mongodb地理空间查询
【发布时间】: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] 附近找到文档并返回整个文档。也许考虑“扁平化”架构(即每个地址使用一个文档)。

标签: mongodb spatial geo


【解决方案1】:

如果您可以更改架构以在文档中获取一个地址并从那里获取最近的节点,则可以解决此问题:

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上创建一个索引并查询,你将得到相关的最近节点

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 2011-04-22
    • 2016-02-12
    • 2011-09-23
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多