Mongodb
Mongodb:如何在同一欄位上創建多個索引?
例如,我創建了這個索引:
db.test.createIndex({field1:1}, {partialFilterExpression:{field2:{$gt:10}}})
索引創建成功。然後我想創建第二個索引:
db.test.createIndex({field1:1}, {partialFilterExpression:{field2:{$lte:10}}}
但上面會給出錯誤
IndexOptionsConflict
,但沒有錯誤細節,只轉儲索引對象。我已經測試過在 PostgreSQL 上創建這樣的索引並且它可以工作。我怎樣才能在 MongoDB 中做到這一點?
可悲的是,MongoDB的限制:
限制
在 MongoDB 中,您不能創建僅在選項上有所不同的索引的多個版本。因此,您不能創建僅通過過濾器表達式不同的多個部分索引。
現在,你只能這樣做:
db.test.createIndex({field1:1}, {partialFilterExpression:{field2:{$gt:10,$lte:10}}})
或者使用帶有佔位符欄位的複合索引:
db.test.createIndex({field1:1, never_use_this_field1: 1}, {partialFilterExpression:{field2:{$gt:10}}}) db.test.createIndex({field1:1, never_use_this_field2: 1}, {partialFilterExpression:{field2:{$lte:10}}}
值得注意的是,這很可能會在 4.8 穩定版本中得到修復。 https://jira.mongodb.org/browse/SERVER-25023