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

Cách chuyển đổi một phần tử trong mảng trong mongoDB

Nếu bạn đang cập nhật tài liệu, bạn có thể sử dụng đường dẫn trong cập nhật . Nhưng tính năng này khả dụng với MongoDB phiên bản 4.2 trở lên.

db.collection.update(
  { },
  [
     { 
          $set: { 
              arr: { 
                  $cond: [ { $in: [ element, "$arr" ] }, 
                           { $setDifference: [ "$arr", [ element ] ] }, 
                           { $concatArrays: [ "$arr", [ element ] ] } 
                  ] 
              }
          }
     }
  ]
)

LƯU Ý: Giả sử biến element là một chuỗi giá trị.

Nếu bạn chỉ đang truy vấn, bạn có thể sử dụng kết hợp sau:

db.collection.aggregate([
     { 
          $addFields: { 
              arr: { 
                  $cond: [ { $in: [ element, "$arr" ] }, 
                           { $setDifference: [ "$arr", [ element ] ] }, 
                           { $concatArrays: [ "$arr", [ element ] ] } 
                  ] 
              }
          }
     }
] )

Tuy nhiên, nếu bạn đang sử dụng phiên bản MongoDB cũ hơn 4.2, thì bạn có thể sử dụng kết quả tổng hợp từ phía trên để cập nhật tài liệu:

db.collection.aggregate( [
  // aggregation pipeine from above ...
] ).forEach( doc => db.collection.updateOne( { _id: doc._id }, { $set: { arr: doc.arr } } ) )


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Lập lịch bảo trì Windows đơn giản trên các cụm cơ sở dữ liệu của bạn

  2. Nâng cấp tài liệu nhúng trong yiimongodbsuite

  3. lấy tài liệu bằng $ box với mongodb và thêm trường khoảng cách cho mỗi bản ghi với điểm tọa độ cụ thể

  4. DeprecationWarning:collection.findAndModify không được dùng nữa. Sử dụng findOneAndUpdate, findOneAndReplace hoặc findOneAndDelete thay thế?

  5. Làm cách nào để xóa đối tượng có tính đến các tham chiếu trong Mongoose Node.js?