如何在 MongoDB 中修改添加的动态文档字段

Posted

技术标签:

【中文标题】如何在 MongoDB 中修改添加的动态文档字段【英文标题】:How to modify added dynamically document fields in MongoDB 【发布时间】:2016-10-24 09:10:24 【问题描述】:

我正在将 MEAN.io 用于一个项目。在 MEAN.io 中,用于管理用户的包位于 node_modules 中,因此不得修改。用户的 MongoDB 模型位于那里,所以如果我想添加新字段,我必须使用我自己自定义创建的包中的 schema.add 方法来完成:

user.schema.add(
    field1: [],
    deleted_at: 
      type: Date,
      default: null
    ,
    banned_at: 
      type: Date,
      default: null
    ,
    created_at: 
      type: Date,
      default: new Date()
    ,
    field2: 
      type: Number,
      default: 0
    ,
    field3: 
      type: Number,
      default: 0
    ,
    field4: 
      type: Number,
      default: 0
    
);

一切似乎都很好,但是当我尝试修改 deleted_at 字段时:

user.deleted_at = new Date();
console.log(user);

用户对象不显示 deleted_at 字段的任何痕迹。它不只是改变任何东西。

所以问题是如何修改动态添加的字段?

提前致谢!

【问题讨论】:

【参考方案1】:

问题是设计模式被编译成模型并且不能动态编辑。该线程 (here) 包含有关 mongoose 的信息,但对于将字段动态添加到数据库模式的其他方法也是如此。

如果您不确定您的架构,您应该使用混合类型。通过@vkarpov15 cmets 了解其他选项。

【讨论】:

以上是关于如何在 MongoDB 中修改添加的动态文档字段的主要内容,如果未能解决你的问题,请参考以下文章

如何修改MONGODB字段的数组,不用整个字段修改

如何在 MongoDB 中搜索动态字段并首先对最佳匹配结果进行排序

向 MongoDB 集合中的每个文档添加新字段

添加一个文档,这是MongoDB中一个字段的累积

MongoDB:如何为集合中的每个文档设置一个等于另一个字段值的新字段[重复]

mongodb怎么插入多个文档