我知道复合索引定义如下:
db.products.ensureIndex( { "item": 1, "stock": 1 } )
并散列一个像这样的简单索引:
db.active.ensureIndex( { item: "hashed" } )
问题是如何实现两者?
答案 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" } )