Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Chèn trường MongoDB chỉ khi trường đó chưa tồn tại

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 đè.