6

我知道复合索引是这样定义的:

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

和一个像这样的简单索引:

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

问题是如何实现两者?

4

3 回答 3

5

根据散列索引文档你不能!

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

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

PS:以上对2.4和2.6版本有效(目前是最新版本)

PS2:根据@naman 的回答,现在可以在 4.4 版中使用

于 2014-02-01T19:23:14.797 回答
2

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

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

对于有问题的特定示例

db.products.ensureIndex( { "item": "hashed", "stock": 1 } )
于 2021-01-22T11:26:31.283 回答
0

MongoDB 4.4 支持具有单个哈希的复合索引,可以像这样创建

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

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

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

于 2021-01-29T11:10:46.467 回答