const operations = [
{
updateOne: {
filter: { email: 'email.1@gmail.com' },
update: {
firstName: 'firstName.1',
lastName: 'lastName.1',
password: 'Password',
},
upsert: true,
},
},
{
updateOne: {
filter: { email: 'email.2@gmail.com' },
update: {
firstName: 'firstName.2',
lastName: 'lastName.2',
password: 'Password',
},
upsert: true,
},
},
{
updateOne: {
filter: { email: 'email.3@gmail.com' },
update: {
firstName: 'firstName.3',
lastName: 'lastName.3',
password: 'Password',
},
upsert: true,
},
},
];
我想在bulkWrite操作中执行以上操作。
try {
const bulkWriteRes = await users.bulkWrite(operations);
console.log(bulkWriteRes);
} catch (err) {
console.log(err);
}
但是在bulkWriteRes中,我只能得到这些细节。
BulkWriteResult {
ok: 1,
writeErrors: [],
writeConcernErrors: [],
insertedIds: [],
nInserted: 0,
nUpserted: 1,
nMatched: 3,
nModified: 3,
nRemoved: 0,
upserted: [
{
index: 5,
_id: '63c977188eb489a9c9cfa4e2',
},
],
};
我想要整个更新对象,无论是创建还是更新,包括字段_id,我已经在过滤器和更新属性中传递的字段。是否有其他选择?
您可以将所有更新作为单独的文档并首先将它们存储为新集合(说toBeUsers
)。然后,您可以执行$merge
将记录插入users
集合。
db.toBeUsers.aggregate([
{
"$merge": {
"into": "users",
"on": "email",
"whenMatched": "merge",
"whenNotMatched": "insert"
}
}
])
Mongo操场