修改数组的最后一个元素

Mua*_*tik 10 arrays mongodb

我有一个像这样的对象结构:

 {
    name: "...",
    pockets: [
        {
            cdate: "....",
            items: [...]
        }
        ...
    ]
 }
Run Code Online (Sandbox Code Playgroud)

在更新操作中,我想在最后一个口袋项的items字段中添加一些记录.使用点符号是我知道访问子文档的唯一方法,但我无法得到我想要的.所以,我正在寻找这样的东西:

  • pockets.-1.items
  • 口袋.$ last.items

是否可以修改最后一个元素?如果有,怎么样?

McG*_*gle 3

我不知道如何使用单行查询来做到这一点。但您可以选择记录、更新然后保存。

var query = <insert query here>;
var mydocs = db.mycollection.find(query);
for (var i=0 ; i<mydocs.length ; i++) {
    mydocs[i].pockets[pockets.length-1].items.push('new item');
    db.mycollection.save(mydoc);
}
Run Code Online (Sandbox Code Playgroud)

  • 这可能不是线程安全的,因为另一个进程可能在查找之后和保存之前修改了数组。 (3认同)