【问题标题】:geospatial index with another multikey index... Any solutions?带有另一个多键索引的地理空间索引......有什么解决方案吗?
【发布时间】:2014-05-22 08:54:53
【问题描述】:

我有一个像下面这样的集合。我想索引“位置”和“product_list.id”。 MongoDB 似乎只允许在文档中使用单个多键索引。有什么办法可以解决吗?

  {
    "location":[62.99932,71.23424],
    "product_list":[
        {"id":"wf2r34f34ff33", "price": "87.99"},
        {"id":"f334r3rff43ff", "price": "21.00"},
        {"id":"wf2r34f34ffef", "price": "87.99"}                    
        ],

    }

【问题讨论】:

    标签: mongodb indexing geospatial mongodb-query multikey


    【解决方案1】:

    的确,您只能在集合的单个复合索引中对单个数组类型的字段进行索引,但您似乎在谈论有点不同的“地理空间”查询。这完全没有错:

    db.collection.ensureIndex({ "location": "2d", "product_list": 1 })
    

    这对于复合索引来说是一种完全有效的形式。

    所以它看起来像一个数组,但在这种情况下 MongoDB 处理它的方式不同。

    【讨论】:

    • 太棒了!谢谢尼尔!您能否指出我提供详细解释的任何文档或博客。我会试试这个。
    • 文档中有一些声明,例如 this,它表示您不能将地理空间查询与其他特殊内容(例如文本)结合起来。但是在复合中添加另一个简单的键并没有错。所以导致复合中的多键索引的东西不是问题。简单的测试是索引创建不会导致错误,实际上可以在查询中使用。例如,如果您尝试location:1, product_list: 1,则会收到错误消息。
    猜你喜欢
    • 2011-04-22
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    • 2011-01-24
    相关资源
    最近更新 更多