Sử dụng update() với điều kiện $exists: false và tùy chọn multi: true.
Tạo collection
> db.missingDocumentDemo.insertOne({"StudentFirstName": "Adam", "StudentLastName": "Smith"});
{ "acknowledged": true, "insertedId": ObjectId("5cd3fb1eedc6604c74817ce6") }
> db.missingDocumentDemo.insertOne({"StudentFirstName": "Carol", "StudentLastName": "Taylor"});
{ "acknowledged": true, "insertedId": ObjectId("5cd3fb29edc6604c74817ce7") }
> db.missingDocumentDemo.insertOne({"StudentFirstName": "David", "StudentLastName": "Miller", "StudentAge": 21});
{ "acknowledged": true, "insertedId": ObjectId("5cd3fb40edc6604c74817ce8") }
Hiển thị tất cả
> db.missingDocumentDemo.find().pretty();
Chèn StudentAge = 23 chỉ cho tài liệu CHƯA CÓ trường này
> db.missingDocumentDemo.update(
{ "StudentAge": { "$exists": false } },
{ "$set": { "StudentAge": 23 } },
{ "multi": true }
);
WriteResult({ "nMatched": 2, "nUpserted": 0, "nModified": 2 })
Kết quả
> db.missingDocumentDemo.find().pretty();
Kết quả (Adam và Carol thêm Age=23, David giữ Age=21):
{
"_id": ObjectId("5cd3fb1eedc6604c74817ce6"),
"StudentFirstName": "Adam", "StudentLastName": "Smith", "StudentAge": 23
}
{
"_id": ObjectId("5cd3fb29edc6604c74817ce7"),
"StudentFirstName": "Carol", "StudentLastName": "Taylor", "StudentAge": 23
}
{
"_id": ObjectId("5cd3fb40edc6604c74817ce8"),
"StudentFirstName": "David", "StudentLastName": "Miller", "StudentAge": 21
}
Giải thích: Điều kiện { "StudentAge": { "$exists": false } } chỉ khớp tài liệu thiếu trường. multi: true cập nhật tất cả tài liệu khớp. David đã có Age nên không bị ghi đè.