Prerequisites
Mongoose version
8.x.x
Node.js version
20.11
MongoDB version
7.0
Operating system
None
Operating system version (i.e. 20.04, 11.3, 10)
No response
Issue
Hi all,
While troubleshooting we ran into some unexpected behavior of the bulkSave function.
If one of the submitted documents is outdated (has a lower version than the copy on the DB), this operation will not throw any error, even though the document won't be updated.
We expected it to behave similarly to the save function, which throws a VersionError in these cases.
Repro:
public async foo() {
const fooSchema = new mongoose.Schema({
bar: { type: Number },
});
const model = mongoose.model("foo", fooSchema);
await model.deleteMany();
const foo = await model.create({
bar: 0
});
// update 1
foo.bar = 1;
await foo.save();
// parallel update
const fooCopy = await model.findById(foo._id);
fooCopy.bar = 99;
await fooCopy.save();
// update 2 - this should throw a version error
foo.bar = 2;
// await foo.save(); // throws a VersionError
await model.bulkSave([foo]) // no error thrown, but update not applied
// log result
console.log(`bar: ${(await model.findById(foo._id)).bar}`); // logs 99
}
Is this the expected behavior of bulkSave? Is there any possibility of making it fail if one of the documents has been already replaced by a newer version instead of returning silently?
Prerequisites
Mongoose version
8.x.x
Node.js version
20.11
MongoDB version
7.0
Operating system
None
Operating system version (i.e. 20.04, 11.3, 10)
No response
Issue
Hi all,
While troubleshooting we ran into some unexpected behavior of the
bulkSavefunction.If one of the submitted documents is outdated (has a lower version than the copy on the DB), this operation will not throw any error, even though the document won't be updated.
We expected it to behave similarly to the
savefunction, which throws aVersionErrorin these cases.Repro:
Is this the expected behavior of
bulkSave? Is there any possibility of making it fail if one of the documents has been already replaced by a newer version instead of returning silently?