Hola, estoy usando la nueva colección mongodb de Timeseries. Mi versión de mongodb es 5.0.6. Estoy siguiendo este tutorial. Creo una colección como esta.
db.createCollection("ticker", { timeseries: { timeField: "time", metaField: "metadata", }, });Inserté el documento de muestra así.
db.ticker.insertOne({ time: ISODate("20210101T01:00:00"), symbol: "BTC-USD", price: 34114.1145, metadata: { a: ""} });Cuando intento actualizar el campo de metadatos, aparece el error anterior. Como se mencionó aquí , hay una limitación, solo puede actualizar metaField pero aún así está dando el error anterior. Aquí está el código de actualización.
db.ticker.update({ "metadata.a": "a" }, { $set: { "metadata.d": "a" } }) write failed with error: { "nMatched" : 0, "nUpserted" : 0, "nModified" : 0, "writeError" : { "code" : 72, "errmsg" : "Cannot perform a non-multi update on a time-series collection" } }Necesito ayuda que estoy haciendo mal.
Intente agregar { multi: true } config.
Si revisa los documentos , todavía existen algunas limitaciones para actualizar las colecciones de series temporales.
Los comandos de actualización deben cumplir los siguientes requisitos:
- La consulta solo puede coincidir con valores de campo de metacampo.
- El comando de actualización solo puede modificar el valor del campo metaField.
- La actualización debe realizarse con un documento de actualización que contenga solo expresiones de operadores de actualización.
- El comando de actualización no puede limitar la cantidad de documentos que se actualizarán. Debe usar un comando de actualización con multi: true o el método updateMany().
- Es posible que el comando de actualización no configure upsert: true.