MongoDB 3.6中使用db.createCollection()创建集合时能否指定字段默认值?
MongoDB 3.6: 指定字段默认值 via db.createCollection()
Hey there! Let's clarify this for MongoDB 3.6 specifically:
- 核心结论: 在MongoDB 3.6中,使用
db.createCollection()创建集合时,无法直接为字段指定默认值。这个方法的配置参数里没有提供设置字段默认值的选项,集合本身在创建阶段不会绑定字段级的默认规则。
如果需要实现类似默认值的效果,你可以用以下两种常用方案:
应用层处理
在你的应用代码中,当准备插入文档时,检查目标字段是否存在,若不存在则自动赋予预设的默认值。这是最直接的方式,逻辑完全由你掌控。使用
$setOnInsert操作符
当执行插入(或upsert)操作时,配合$setOnInsert来为新插入的文档添加默认字段。比如:db.yourCollection.update( { _id: ObjectId("someUniqueId") }, { $setOnInsert: { status: "active", createdAt: new Date() } }, { upsert: true } );这里
upsert: true意味着如果查询条件匹配不到文档,就会插入新文档;此时$setOnInsert里的字段会作为默认值被添加到新文档中。
补充说明:MongoDB从4.2版本开始,才支持在集合的schema validation规则中直接指定字段默认值。但3.6版本还不具备这个特性,所以只能依赖上述替代方案。
内容的提问来源于stack exchange,提问作者Soulimane Mammar
相关产品推荐
相关产品推荐

