如何定义一个复合和散列的mongodb索引?

时间:2014-02-01 19:03:00

标签: mongodb

我知道复合索引定义如下:

db.products.ensureIndex( { "item": 1, "stock": 1 } )

并散列一个像这样的简单索引:

db.active.ensureIndex( { item: "hashed" } )

问题是如何实现两者?

3 个答案:

答案 0 :(得分:3)

根据hashed index documentaion你不能!

  

MongoDB支持任何单个字段的散列索引。哈希   函数折叠子文档并计算整个哈希值   值,但不支持多键(即数组)索引。

     

您可能创建具有散列索引字段的复合索引

PS:以上版本适用于版本2.4和2.6(目前是最新版本)

答案 1 :(得分:2)

如果要实现复合哈希索引,4.4及以上版本是可行的。从 documentation,您现在可以将其创建为:

db.adminCommand( { setFeatureCompatibilityVersion: "4.4" } )
db.collection.createIndex( { "fieldA" : 1, "fieldB" : "hashed", "fieldC" : -1 } )

对于有问题的特定示例

db.products.ensureIndex( { "item": "hashed", "stock": 1 } )

答案 2 :(得分:0)

MongoDB 4.4 支持单散列的复合索引,可以像这样创建

db.collection.createIndex( { "colA" : 1, "fieldB" : "hashed" } )

注意:确保 featureCompatibilityVersion 设置为 4.4,以便您可以创建复合哈希索引。

db.adminCommand( { setFeatureCompatibilityVersion: "4.4" } )