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
aggregate(
[{"$set":
{"sites":
{"$map":
{"input":"$sites",
"in":
{"$setField":
{"field":"new_field",
"input":"$$this",
"value":"$$this.energy_consumption"}}}}}}]
)