Mongo 数据库唯一索引 - 日期字段的部分过滤器表达式

Mongo DB Unique Index - Partial filter expression on date field

我们有一个集合,其中很少有文档由于代码中的问题而重复。它们数量众多 (> 280K)。由于前端的一些用户更新,这些记录已经更新。现在,这些记录无法删除,因为这些记录上有一些交易。为了避免这种情况,我们正在考虑在创建日期创建一个带有部分表达式的唯一索引。但是,这不起作用。需要有关如何实现此目标的帮助。尽我所能在文档中获得,具有部分约束的唯一索引将只考虑匹配的文档。

db.collection1.createIndex({"uniqueid":1},{"background":true, "unique":true, "partialFilterExperssion":{ "created_date":{"$gte":ISODate("2021-04-27T15:30:00Z")}}})

如果你在这里看到 created_date 指定为未来,因为现在的时间是 2021-04-26T19:22:00,所以理想情况下,不管集合中的当前数据如何,基于 partialFilterExpression,应该创建该索引。然而,这给出了一个错误

{
 "ok" : 0.0,
 "errmsg" : "E11000 duplicate key error collection: lms.collection1 index: uniqueid_1 dup key: { : null }",
 "code" : 11000
}

为什么要查看现有数据来创建索引?任何有助于理解错误原因的帮助将不胜感激。

部分过滤器没有问题,部分过滤器不被考虑,因为存在拼写错误 'expression' 部分拼写错误。一旦纠正,它就像一个魅力。我的错。