MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cập nhật phần tử trong mảng nếu tồn tại khác chèn phần tử mới vào mảng đó trong MongoDb

Sử dụng $addToSet thay vì $push .

db.push.update(
    { _id: 5 },
    { $addToSet: { "quizzes": {"wk": 6.0, "score": 8.0}, "play": {"wk": 6.0, "score": 8.0} } }
)

CHỈNH SỬA:

Không có cách tiếp cận tích hợp đơn giản nào để cập nhật tài liệu con có điều kiện trong một trường mảng, theo thuộc tính cụ thể. Tuy nhiên, một thủ thuật nhỏ có thể thực hiện công việc bằng cách thực hiện hai lệnh liên tiếp.

Ví dụ:Nếu chúng tôi muốn cập nhật quizzes trường có đối tượng { "wk": 7.0, "score": 8.0 } , chúng ta có thể thực hiện theo hai bước:

Bước 1: $pull ra các tài liệu con từ quizzes mảng trong đó "wk": 7.0 . ( Không có gì xảy ra nếu không tìm thấy tài liệu phụ phù hợp ).

db.push.update(
    { _id: 5 },
    { $pull: { "quizzes": { "wk": 7.0 } } }
)

Bước 2: $addToSet tài liệu phụ.

db.push.update(
    { _id: 5 },
    { $addToSet: { "quizzes": {"wk": 7.0, "score": 8.0} } }
)

Bạn có thể kết hợp hai lệnh cập nhật ở trên bằng cách sử dụng bulk.find().update()



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Lệnh đếm MongoDB

  2. Sync MongoDB Qua ssh

  3. Di chuyển MongoDB sang DynamoDB, Phần 2

  4. MongoDB Java Inserting Throws org.bson.codecs.configuration.CodecConfigurationException:Không thể tìm thấy codec cho lớp io.github.ilkgunel.mongodb.Pojo

  5. Chuyển đổi chuỗi thành ObjectID trong MongoDB