如何增加嵌套数组对象mongodb

时间:2019-12-26 10:54:18

标签: mongodb

我有一个看起来像这样的文件

{
 _id:'asasasasa23sdsdsd',
 source:'page',
 url:[]
}

我需要向url数组中插入一些值/对象。需要向上插入的对象如下所示。

{
"type" : "blog",
"value" : "hello blog",
"id" : "1815f620-b45c-4230-85bb-7ba90ac330ed",
"datetime" : "2019-12-26 15:58:33"
}

然后看起来像这样

{
 _id:'asasasasa23sdsdsd',
 source:'page',
 url:[{
    "type" : "admin",
    "value" : "hello admin",
    "id" : "1815f620-b45c-4230-85bb-7ba90ac330ed",
    "datetime" : "2019-12-26 15:58:33"
     },
   {
    "type" : "blog",
    "value" : "hello blog",
    "id" : "1815f620-b45c-4230-85bb-7ba90ac330ed",
    "datetime" : "2019-12-26 15:58:33"
   }
  ]
}

此处的id和type字段是唯一的。如果它们不存在,我需要将其插入,如果存在,则需要对其进行更新。 这是我尝试过的代码

db.collection(TABLE_NAME).update(
      { source: data.source },
      {
        source: data.source,
        url: [data.urls]
      },
      { upsert: true }
    );

这样,它只是将数组对象替换为新对象。如何重新插入而不是替换对象?

1 个答案:

答案 0 :(得分:0)

我认为这段代码会有所帮助。

    let arr = [
   {
    "type" : "admin",
    "value" : "hello admin",
    "id" : "1815f620-b45c-4230-85bb-7ba90ac330ed",
    "datetime" : "2019-12-26 15:58:33"
     },
   {
    "type" : "blog",
    "value" : "hello blog",
    "id" : "1815f620-b45c-4230-85bb-7ba90ac330ed",
    "datetime" : "2019-12-26 15:58:33"
   }
    ];

    db.users.update(
      { _id: doc._id },
      {
        $set: {
          "url": arr
        }
      }
    );