使用$ push运算符更新MongoDB文档

时间:2016-03-28 11:03:39

标签: c++ arrays mongodb push

我的MongoDB文档结构如下:

{
"_id" : ObjectId("56ebce0d1e3c51fe6a5053f3"),
"timestamp" : 1458294285,
"values" : [ 
    {
        "offset" : 132,
        "packets" : [ 
            {
                "type" : "type1",
                "data" : "some_data1"
            }, 
            {
                "type" : "type2",
                "data" : "some_data2"
            }
        ]
    }
}

我将它用于存储时间序列数据。 我想创建一个在数据包数组中插入数据包的查询。 我使用MongoDB c ++遗留驱动程序1.1.0。 当我将使用相同的时间戳和偏移量执行下面两次代码时:

mongo::BSONObj query = BSON("timestamp" << timestamp);
mongo::BSONObj mainObj = 
BSON ("$push" << BSON("values" << BSON("offset" << timestampOffset <<
                                       "packets" << BSON_ARRAY(obj))));
connection.update(collectionName, query, mainObj, true);

我有这样的结果:

{
    "_id" : ObjectId("56f90c1a3b20b7c1f61dccf7"),
    "timestamp" : 1459080000,
    "values" : [ 
        {
            "offset" : 68457,
            "packets" : [ 
                {
                    "type" : "type1",
                    "data" : "some_data1"
                }
                ]
        }, 
        {
            "offset" : 68457,
            "packets" : [ 
                {
                    "type" : "type2",
                    "data" : "some_data2"
                }
            ]
        }
    ]
}

有人可以帮我创建正确的查询,以便将数据插入到具有特定结构的文档中吗?

0 个答案:

没有答案