У меня есть документ в день на метр. Как я могу добавить еще один поддокумент в массив данных и создать весь документ, если он не существует?Mongodb upsert embedded document
{ "key": "20120418_123456789", "data":[ { "Meter": 123456789, "Dt": ISODate("2011-12-29T16:00:00.0Z"), "Energy": 25, "PMin": 11, "PMax": 16 } ], "config": {"someparam": 4.5} }
Могу ли я использовать upsert для этой цели?
Результат будет, если документ существует:
{ "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} }
Заранее спасибо
я должен сделать 400000 addToSet в день ... 96 данные за каждый документ. Кажется, он медленный ... Есть ли другие способы сделать это? – hotips
, как уже упоминалось, вы собираетесь запускать несколько ходов, увеличивая таким образом массив значений - это приведет к замедлению, если вы каким-либо образом не привязаете массив и не сможете предсказать его максимальный размер, - тогда вы можете соответствующим образом поместить его и обновления будут намного быстрее. Если вы не можете этого сделать, возможно, вам стоит рассмотреть другую схему и иметь данные в другой коллекции, а не как встроенный массив. –