我有数据列表-
{bookName: book1,
bookId: bookId1,
bookType: type1,
publisher: publisher1,
uniqueCombo: "bookId" + "publisher"}
在这种情况下,我的唯一标识符为uniqueCombo。我想根据uniqueCombo将这些数据追加到我的mongo集合中。如果集合中不存在最新数据的唯一uniqueCombo,则进行插入,否则更新找到了uniqueCombo的文档。
我可以在这里使用循环并逐一插入数据,但我不想使用循环。或者,我可以在字段uniqueCombo上使用唯一索引来完成这项工作,但我需要知道是否有其他方法可以实现此目的。
我正在使用MongoDB Shell版本4.2.3。
除非uniqueCombo
重命名为_id
,否则将必须使用循环。但是,您可以使用批量运算符将其构建为单个操作。
var bulk = db.users.initializeUnorderedBulkOp();
// foreach book
for (var i = 0; i < books.length; i++) {
var book = books[i];
bulk.find({
uniqueCombo: book.bookId + book.publisher
}).upsert().updateOne({
{
bookName: book.bookName,
bookId: book.bookId,
bookType: book.bookType,
publisher: book.publisher,
uniqueCombo: book.bookId + book.publisher
}
});
}
bulk.execute();