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

Làm cách nào để sử dụng $ set và ký hiệu dấu chấm để cập nhật các phần tử mảng được nhúng bằng cách sử dụng phần tử cũ tương ứng?

Nếu trường là thành viên của một mảng bằng cách chọn nó, bạn đang chọn tất cả chúng.

{ar :[{"a" : 1}, {"a" : 2}]}

"$ar.a" = [1 ,2]

Ngoài ra, bạn không thể trộn các toán tử cập nhật với tổng hợp, bạn không thể sử dụng những thứ như $sites.$.energy_consumption , nếu bạn đang thực hiện tổng hợp, bạn phải sử dụng các toán tử tổng hợp, chỉ ngoại trừ $match giai đoạn mà bạn có thể sử dụng các toán tử truy vấn.

Truy vấn

  • giải pháp thay thế hơi khác so với giải pháp của bạn bằng cách sử dụng $setField
  • tôi đoán nó sẽ nhanh hơn, nhưng có thể là một chút khác biệt
  • không cần sử dụng javascript, nó sẽ chậm hơn
  • đây là giải pháp> =MongoDB 5, $setField là nhà điều hành mới

Mã kiểm tra tại đây

aggregate(
[{"$set":
  {"sites":
   {"$map":
    {"input":"$sites",
     "in":
     {"$setField":
      {"field":"new_field",
       "input":"$$this",
       "value":"$$this.energy_consumption"}}}}}}]
)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách tìm tài liệu bằng mục nhúng trong MongoDB PHP

  2. Lỗi:không có kết nối nào đang mở tại Db._executeQueryCommand Node.js

  3. Cách truy vấn khóa động - Thiết kế lược đồ mongodb

  4. Chuyển các lọ bổ sung cho Spark thông qua spark-submit

  5. BsonSerializationException khi tuần tự hóa một Từ điển <DateTime, T> thành BSON