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

ram*_*lla 6 mongodb mongodb-indexes

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

db.products.ensureIndex( { "item": 1, "stock": 1 } )
Run Code Online (Sandbox Code Playgroud)

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

db.active.ensureIndex( { item: "hashed" } )
Run Code Online (Sandbox Code Playgroud)

问题是如何实现两者?

xle*_*ras 5

根据散列索引documentaion你不能!

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

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

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

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

  • 我知道,我没说反义词。最后它说**您可能不会创建具有散列索引字段的复合索引**,并且您只能创建单个字段的复合索引,这可以回答您的问题。如果您绝对需要这两个字段的散列索引,请将它们作为子文档的单个字段,根据文档,它可以工作。 (2认同)