问题描述
所以我在某些字段上创建了一个唯一索引,其中一个字段(让我们将其命名为 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 (将#修改为@)