Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 如何创建mongo索引以确保字段从不为空/不存在/为空?_Mongodb - Fatal编程技术网

Mongodb 如何创建mongo索引以确保字段从不为空/不存在/为空?

Mongodb 如何创建mongo索引以确保字段从不为空/不存在/为空?,mongodb,Mongodb,我在实体中有一个字段,它必须存在,但不一定是唯一的。 有没有办法在Mongo中强制执行此约束 我知道mongo集合是无模式的,集合可以拥有的唯一模式是索引模式。但我看不出是否有索引选项来确保字段值不为空,其中空字段值满足以下javascript表达式: !value && value !== 0 && value !== false 只有在唯一索引上,才能模拟这种情况。您可以创建一个缺少字段/值的条目的文档,它将使用索引中的空值创建文档,并且不允许进一步缺少值

我在实体中有一个字段,它必须存在,但不一定是唯一的。 有没有办法在Mongo中强制执行此约束

我知道mongo集合是无模式的,集合可以拥有的唯一模式是索引模式。但我看不出是否有索引选项来确保字段值不为空,其中空字段值满足以下javascript表达式:

!value && value !== 0 && value !== false

只有在唯一索引上,才能模拟这种情况。您可以创建一个缺少字段/值的条目的文档,它将使用索引中的空值创建文档,并且不允许进一步缺少值


由于您的需求是非唯一键,因此我认为在MONGODB(v2.2)中,您目前没有选项确保这些值必须出现在索引列上

在mongodb中,只有
\u id
字段可以满足您的要求。对于这个问题,索引似乎不是一个好主意(也不可行)


我认为您必须在应用程序的插入和更新操作中强制执行此规则,而不是让mongodb为您观看

这可能是您想要的答案(在Java/Kotlin中):


从V3.2开始,现在就可以这样做了。有关更多信息,请参阅:
    col.createIndex(Document("note", 2), IndexOptions()
            .partialFilterExpression(Filters.and(
                    Filters.gt("note", ""),
                    Filters.exists("note")))