Tôi có tài liệu mỗi ngày trên mỗi mét. Làm thế nào tôi có thể thêm một subdocument khác trong mảng dữ liệu và tạo toàn bộ tài liệu nếu không tồn tại?Mongodb upsert tài liệu nhúng
{ "key": "20120418_123456789", "data":[ { "Meter": 123456789, "Dt": ISODate("2011-12-29T16:00:00.0Z"), "Energy": 25, "PMin": 11, "PMax": 16 } ], "config": {"someparam": 4.5} }
Tôi có thể sử dụng upsert cho mục đích đó không?
Kết quả sẽ là nếu tài liệu tồn tại:
{ "key": "20120418_123456789", "data":[ { "Meter": 123456789, "Dt": ISODate("2011-12-29T16:00:00.0Z"), "Energy": 25, "PMin": 11, "PMax": 16 }, { "Meter": 123456789, "Dt": ISODate("2011-12-29T16:15:00.0Z"), "Energy": 22, "PMin": 13, "PMax": 17 } ], "config": {"someparam": 4.5} }
Cảm ơn trước
Tôi sẽ phải làm 400000 addToSet mỗi ngày ... 96 dữ liệu trên mỗi tài liệu. Nó có vẻ chậm ... Có cách nào khác để làm điều đó không? – hotips
như đã đề cập, bạn sẽ kích hoạt nhiều di chuyển bằng cách phát triển một mảng giá trị theo cách đó - điều đó sẽ làm chậm tốc độ, trừ khi bạn giới hạn mảng theo một cách nào đó và có thể dự đoán kích thước tối đa của nó - sau đó bạn có thể đệm nó một cách thích hợp và cập nhật sẽ nhanh hơn rất nhiều. Nếu bạn không thể làm điều đó thì có lẽ bạn nên xem xét một lược đồ khác và có dữ liệu trong một bộ sưu tập khác chứ không phải là một mảng được nhúng. –