MongoDb 索引:$type: string 是否和 $exists 一样有效?

问题描述

所以我在某些字段上创建了一个唯一索引,其中一个字段(让我们将其命名为 fieldA)必须不为空,索引才能正常工作。所以索引看起来像这样:

{
  fields: { fieldA,fieldB },index: {
    name: 'fieldA_fieldB',background: true,unique: true,partialFilterExpression: { fieldA: { $exists: true } },},

但是我发现如果我将 null 插入 fieldA,它会被编入索引,但我想要插入这样的字段。

示例:

------ 第一个例子------

In collection:
record 1: fieldA: 'aaa',fieldB: 'bbb1'
record 2: fieldA: 'aaa',fieldB: 'bbb2'

插入

record 3: fieldA: 'aaa',fieldB: 'bbb1'

应该抛出,因为它破坏了索引的唯一性。

------ 第二个例子------

In collection:
record 1: fieldA: null,fieldB: 'bbb'
record 2: fieldB: 'bbb'

插入

record 4: fieldA: null,fieldB: 'bbb'

不应该抛出,因为四个记录都没有被索引。

所以最终我发现能够编写 partialFilterExpression: { fieldA: { $type: 'string' } } 并且它适用于上面的示例。我的问题是:这种方式的性能是否足以采用这种方法?有没有我可能陷入的缺点或漏洞?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)