首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更新[Schema.Types.Mixed]?

如何更新[Schema.Types.Mixed]?
EN

Stack Overflow用户
提问于 2021-04-22 08:12:21
回答 1查看 267关注 0票数 0

我正在使用Schema.Types.Mixed存储“概要文件”,这是我的模式

代码语言:javascript
复制
const userSchema = new mongoose.Schema(
  {
    name: {
      type: String,
      required: true,
      trim: true,
    },
    profiles:{
        type: Schema.Types.Mixed
    }
}

假设我有一个带有值的文档:

代码语言:javascript
复制
{
    name: "XYZ"
    profiles:{
       "fb" : {
            "name": "XYZ",
            "pic": "source",
            "link": "www.fb.com/xyz"
        },
       "twitter" : {
            "name": "XYZ",
            "pic": "source",
            "link": "www.twitter.com/xyz"
        }  
    }
}

我想再加一个字段"youtube“。如何编写updateOne查询,使其在配置文件中更新这个新字段?以及如何更新这些内部字段的值?假设我只想更新fb的“链接”字段,我该如何做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-22 08:54:56

您可以使用Mongo的聚合管道。

如何编写updateOne查询,使其在配置文件中更新这个新字段?

代码语言:javascript
复制
db.profiles.aggregate( [
        {
           $addFields: {
              "profiles.youtube": "add the data here"
           }
        }
   ] )

以及如何更新这些内部字段的值?

代码语言:javascript
复制
db.profiles.aggregate( [
        {
           $addFields: {
              "profiles.twitter.name": "add the data here"
           }
        }
   ] )

这将更新现有字段。如果要对整个集合进行更改,则此管道运行良好。有关更多细节,请查看

如果要对一个文档执行此操作,则可以这样做:

代码语言:javascript
复制
db.profiles.update({"name": "XYZ" },{$set : {"profiles.youtube":"add data here"}});

// to update existing data
db.profiles.update({"name": "XYZ" },{$set : {"profiles.twitter":"add data here"}});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67209298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档