Mongodb查找和插入

Mongodb查找和插入,mongodb,Mongodb,我想: 1) 查找文档 2) 找到的每个文档都包含一个数组,我想在数组中插入一个新的数组元素。如果数组元素已经存在,则不执行任何操作(不要在数组中插入新元素) 我玩过聚合,但似乎找不到插入函数 数据: 您可以使用批量操作,特别是和更新。至于添加唯一值,您可以使用 如用户3100115所述,您应按如下方式使用更新: db.collection.update({cell:1},{$addToSet:{sessions:{id: 'test'}}},{multi:true}) 使用co-monk:

我想:

1) 查找文档

2) 找到的每个文档都包含一个数组,我想在数组中插入一个新的数组元素。如果数组元素已经存在,则不执行任何操作(不要在数组中插入新元素)

我玩过聚合,但似乎找不到插入函数

数据:


您可以使用批量操作,特别是和更新。至于添加唯一值,您可以使用


如用户3100115所述,您应按如下方式使用更新:

db.collection.update({cell:1},{$addToSet:{sessions:{id: 'test'}}},{multi:true})
使用co-monk:

yield users.update({
    cell: 1
}, {
    $addToSet: {
        sessions: {
            id: 'test'
        }
    }
}, {
    multi: true
});

一个简单的方法就行了here@user3100115所以像
$match
但是
$update
?你真的不需要聚合或批量操作,这很简单。@user3100115我一直在阅读你链接的内容,但不知道如何实现它,如果你举个例子,我可能会更了解它。您好,我试图实现你的答案,但仍然不起作用。我已经用代码更新了这个问题。
yield new Promise(function (resolve, reject) {
    var bulk = users.col.initializeUnorderedBulkOp();
bulk.find({
        cell: 1
    }).update({
        $addToSet: {
            sessions: {
                id: 'test'
            }
        }
    });
    bulk.execute(function (err, res) {
        console.log(res);
        resolve(res);
    });
});
var bulk = db.items.initializeUnorderedBulkOp();
bulk.find({cell: socket.cell}).update({$addToSet: {sessions: id}});
db.collection.update({cell:1},{$addToSet:{sessions:{id: 'test'}}},{multi:true})
yield users.update({
    cell: 1
}, {
    $addToSet: {
        sessions: {
            id: 'test'
        }
    }
}, {
    multi: true
});