尝试使用node.js upsert mongodb子文档数组

时间:2015-05-20 21:41:34

标签: node.js mongodb

我有一个简单的mongo集合,带有一系列子文档。我试图做的是“在数组中插入一个子文档”。我已阅读有关此主题的所有问题,但似乎无法使其发挥作用。

game_managers的数据结构:

{
    "_id" : ObjectId("555cf465715ff974fb09221f"),
    "game_id" : "123456789",
    "players" : [ 
        {
            "request_email" : "thebigcheese@foobar.com",
            "request_notes" : "I love mongo!",
            "user_id" : ObjectId("551eb55f555b404d68b88063")
        },
        {
            "request_email" : "morecowbell@example.com",
            "request_notes" : "I love oysters!",
            "user_id" : ObjectId("551eb55f555b404d68b88063")
        }
    ]
}

当我尝试使用以下代码创建/更新时,它总是覆盖第一个元素。我甚至无法得到它

var col = db.mongo.collection('game_managers');
// Upsert a game manager record for the game
col.update( {game_id:game.place_id}, {$setOnInsert:{game_id:game.game_id}}, { upsert: true }, function(err, result, upserted) {
    // Append or update game manager record.
    col.update(
        {game_id:game.place_id},
        {$addToSet: {"players":fields}},
        function(err, result) {
            next();
        }
    );
});

我对此similar question的代码进行了建模,但它不适用于子文档数组。我不想$ pull,然后$ push一个新元素,因为子文档最终会有时间戳和一些注释[{},{},{}] subdocs。

0 个答案:

没有答案