He estado en esto por un tiempo ahora. Intentando actualizar varios valores de matriz, en el mismo objeto, con una sola consulta.
Los datos de la base de datos se ven así:
id: 616f5aca5f60da8bb5870e36 title: "title" recommendations: { 616f65705f60da8bb5870e37: [ 0: 25, 1: "title 2" ], 61e83b48e498cc5aae9dc741: [ 0: 22, 1: "title 3" ] }Hasta ahora he intentado tanto preparar una declaración como esta:
const fetchQuery = "recommendations.616f65705f60da8bb5870e37.0 : 1, recommendations.61e83b48e498cc5aae9dc741.0 : 1"; const result = await videoGamesCollection.updateOne( { _id: ObjectId(req.body.parentId) }, { $inc: fetchQuery } );Y usando filtros de matriz:
const result = await videoGamesCollection.updateOne( { _id: ObjectId(req.body.parentId) }, { $inc: {"recommendations.$[elem].0": 1} }, {arrayFilters: [{"elem":{$in:[req.body.voteIds]}}]} );Pero tampoco parece funcionar. ¿Es esto posible o mi única opción es convertirme en una matriz de matrices?
¡Gracias!
Debe incluir recommendations.616f65705f60da8bb5870e37.0 entre comillas, como:
const result = await videoGamesCollection.updateOne( { _id: ObjectId(req.body.parentId) }, { $inc: { "recommendations.616f65705f60da8bb5870e37.0": 1, "recommendations.61e83b48e498cc5aae9dc741.0": 1 } );