首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDb :更新记录并推送到数组。不能同时更新'addresses.0‘和’addresses.0.

MongoDb :更新记录并推送到数组。不能同时更新'addresses.0‘和’addresses.0.
EN

Stack Overflow用户
提问于 2016-06-24 05:49:28
回答 1查看 103关注 0票数 0

我有一个包含此模式的集合名称

代码语言:javascript
复制
    {
    name: "A1",
    addresses : 
   [
    {
    add1 : "a1",
    add2 : "a2",
    insertupdate:[
            {
            "mode" : "i" ,
            "user" : "abcd"
            }
                 ]
    }
    ,
    {
    add1 : "a3",
    add2 : "a4",
    insertupdate:[
            {
            "mode" : "i",
            "user" : "pqrs"
            }
              ]
    }
   ],
   insertupdate:[
            {
            "mode" : "i",
            "user" : "pqrs"
            }
   ]
  }

我想做的事:

我希望将记录add1 = "a1“更新为add2 = "a5”&在addresses.insertupdate中推送记录以及插入日期。

我尝试了什么:

代码语言:javascript
复制
db.names.update({name:"A1",addresses.add1:"a1"},
{
$set : {
        addresses.$ : 
        {
        "add2":"a5"
        }
       },
$push : {
    "insertupdate" : {"mode":"u","user":"xyz"},
    "addresses.$.insertupdate" : {"mode":"u","user":"xyz"}
       }
}
);

我得到的错误:

不能同时更新'addresses.0‘和’addresses.0.

编辑:

这个命令是成功的。然而,它不会让我设定我的价值观。也就是说,我需要一种方法来使用集合&与位置操作符同时推送。

代码语言:javascript
复制
 db.names.update(
 {"name":"A1", "addresses.add1":"a1"}, 
 {$push:{
        "insertupdate":{"mode":"u","user":"xyz"},
        "addresses.$.insertupdate":{"mode":"u","user":"xyz"}
        } 
 })
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-24 08:09:09

在我的一个问题中有一条评论告诉我mongodb update using positional operator $ removes other fields :的答案

代码语言:javascript
复制
db.names.update({name:"A1",addresses.add1:"a1"},
{
$set : {
        "addresses.$.add2" : "a5"        
       },
$push : {
    "insertupdate" : {"mode":"u","user":"xyz"},
    "addresses.$.insertupdate" : {"mode":"u","user":"xyz"}
       }
}
);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38006383

复制
相关文章

相似问题

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