4

我的 mongodb 文件是

{
    "_id" : {
        "coid" : "testcoid",
        "cid" : "testcid"
    },
    "communications" : [
        {
            "sid" : "testsid",
            "campid" : "testcampid"
        }
    ]
}

我想最后添加点击字段并添加多个值

{
        "_id" : {
            "coid" : "testcoid",
            "cid" : "testcid"
        },
        "communications" : [
            {
                "sid" : "testsid",
                "campid" : "testcampid",
                            "clicks" : {"www.google.com" , "www.facebook.com"}
            }
        ]
}

我正在使用命令

db.messages.update({$and : [{"_id.coid" : "testcoid"}, {"communications.sid" : "testsid"}]},{ $push : {"communications.$.clicks" : {$each : ["www.google.com" , "www.facebook.com"]}}})

而是给出了这个文件

db.messages.find().pretty()
{
    "_id" : {
        "coid" : "testcoid",
        "cid" : "testcid"
    },
    "communications" : [
        {
            "campid" : "testcampid",
            "clicks" : [
                     {
                    "$each" : [
                        "www.google1.com",
                        "www.google2.com"
                    ]
                      }

            ],
            "sid" : "testsid"
        }
    ]
}

注意:我需要用 push 本身而不是 pushAll 来做。有没有办法通过推送来做到这一点,为什么用 $each 对象来更新它?

4

1 回答 1

2

您的查询在我的盒子上有效, http: //pastebin.com/STUjCuMd

您使用的是哪个 mongodb 版本?

检查这个:https ://jira.mongodb.org/browse/SERVER-830​​3

于 2013-06-26T07:40:35.913 回答