我有一个简单的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。