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

时间:2013-06-26 06:43:45

标签: mongodb nosql

我的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"
        }
    ]
}

注意:我需要使用推送本身而不是pushAll。有没有办法用push执行它,为什么用$ each对象更新它?

1 个答案:

答案 0 :(得分:2)

您的查询在我的方框http://pastebin.com/STUjCuMd

上有效

您使用的是哪种mongodb版本?

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