Để lấy số lượng document đã được cập nhật trong MongoDB, bạn sử dụng db.runCommand("getlasterror") ngay sau thao tác update. Kết quả trả về chứa trường n cho biết số document đã sửa đổi.
Tạo dữ liệu mẫu
> db.getNumberOfUpdatedDocumentsDemo.insertOne({"StudentName":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca28c1d6304881c5ce84bad") }
> db.getNumberOfUpdatedDocumentsDemo.insertOne({"StudentName":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca28c226304881c5ce84bae") }
> db.getNumberOfUpdatedDocumentsDemo.insertOne({"StudentName":"Robert"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca28c276304881c5ce84baf") }
> db.getNumberOfUpdatedDocumentsDemo.insertOne({"StudentName":"Ramit"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca28c366304881c5ce84bb0") }
> db.getNumberOfUpdatedDocumentsDemo.insertOne({"StudentName":"Adam"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca28c436304881c5ce84bb1") }
Hiển thị tất cả:
> db.getNumberOfUpdatedDocumentsDemo.find().pretty();
Cập nhật và lấy số document đã sửa
Cập nhật tất cả document (multi: true):
> db.getNumberOfUpdatedDocumentsDemo.update({}, {$set : {"StudentName" : "Carol"}}, true, true); WriteResult({ "nMatched" : 5, "nUpserted" : 0, "nModified" : 5 })Ngay sau đó chạy getlasterror:
> db.runCommand( "getlasterror" );Trường
"n" : 5cho thấy 5 document đã được cập nhật.Kiểm tra dữ liệu:
> db.getNumberOfUpdatedDocumentsDemo.find().pretty();Lưu ý: Trong driver mới (MongoDB 3.2+),
update()trả về object chứanModifiedtrực tiếp.getlasterrorlà cách truyền thống trong shell.