Tengo un documento por día por metro. ¿Cómo puedo agregar otro subdocumento en la matriz de datos y crear todo el documento si no existe?Mongodb upsert documento incrustado
{ "key": "20120418_123456789", "data":[ { "Meter": 123456789, "Dt": ISODate("2011-12-29T16:00:00.0Z"), "Energy": 25, "PMin": 11, "PMax": 16 } ], "config": {"someparam": 4.5} }
¿Puedo usar upsert para ese propósito?
El resultado será si existe documento:
{ "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} }
Gracias de antemano
voy a tener que hacer 400000 addToSet por día ... 96 datos por documento. Parece ser lento ... ¿Hay otras formas de hacerlo? – hotips
como se mencionó, va a desencadenar varios movimientos al hacer crecer una matriz de valores de esa manera, lo que provocará una desaceleración, a menos que vincule la matriz de alguna manera y pueda predecir su tamaño máximo, luego puede rellenarla adecuadamente y las actualizaciones serían mucho más rápidas. Si no puede hacer eso, quizás debería considerar un esquema diferente y tener los datos en otra colección en lugar de como una matriz incrustada. –