MongoDB在一个新字段上创建索引



我需要在MongoDB中创建一个TTL索引,为此,我添加了一个新字段"last_modified";。我正在使用最新的Python和pymongo,以防出现任何差异。在阅读了关于稀疏索引和非稀疏索引的信息之后,我理解所有不具有"稀疏索引"的文档;last_modified";将此字段添加null值。

有没有办法为这些文档设置一些默认值而不是null?

或者,我将不得不使用一些迁移功能更新所有DB实例中的所有文档,但我真的想把它清理干净。。。

提前感谢任何链接或想法!

我理解所有没有"last_modified";将此字段添加null值。

不,这不是真的,稀疏索引只是索引字段存在的文档。没有此字段的文档将不在索引范围内。

有没有办法为这些文档设置一些默认值而不是null。。。我必须更新所有数据库实例中的所有文档。。。把它弄干净。。。

您必须运行更新,没有神奇的解决方案。不确定为什么这样做是";不干净";。

更新非常简单:

// this query will allow you to execute the update even if you started streaming new events with this field.
db.collection.updateMany({ last_modified: {$exists: false} }, { $set: { last_modified: defaultValue }})

最新更新