使用$each with $push正在推动mongodb中的整个对象

我的
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.有没有办法用push来实现它,为什么用$each对象更新它?

最佳答案 您的查询在我的框中工作,
http://pastebin.com/STUjCuMd

你正在使用哪个mongodb版本?

检查:https://jira.mongodb.org/browse/SERVER-8303

点赞