我在实体中有一个字段,它必须存在,但不一定是唯一的。有没有办法在 Mongo 中强制执行这个约束?
我知道 mongo 集合是无模式的,集合可以拥有的唯一模式是索引模式。但我没有看到是否有一个索引选项来确保字段值不为空,其中一个空字段值满足以下 javascript 表达式:
!value && value !== 0 && value !== false
我在实体中有一个字段,它必须存在,但不一定是唯一的。有没有办法在 Mongo 中强制执行这个约束?
我知道 mongo 集合是无模式的,集合可以拥有的唯一模式是索引模式。但我没有看到是否有一个索引选项来确保字段值不为空,其中一个空字段值满足以下 javascript 表达式:
!value && value !== 0 && value !== false
只有在 UNIQUE 索引上,您才能模拟它。您可以创建一个包含缺少字段/值的条目的文档,它将在索引中创建具有 NULL 值的文档,并且不会允许进一步的缺失值。
由于您的要求是 NON UNIQUE 键,因此我认为您此时在 MONGODB (v2.2) 中没有选项来确保值必须出现在索引列上。
在 mongodb 中,只有_id
字段才能满足您的要求。对于这个问题,索引似乎不是一个好主意(既不可行)。
我认为您必须在应用程序的插入和更新操作中强制执行此规则,而不是要求 mongodb 为您监视它。
这可能是您想要的答案(在 Java/Kotlin 中):
col.createIndex(Document("note", 2), IndexOptions()
.partialFilterExpression(Filters.and(
Filters.gt("note", ""),
Filters.exists("note")))