Trabajando en un proyecto que usa MongoDB como base de datos. Estoy atascado tratando de obtener una serie de objetos que tengo que actualizar. Aquí está el esquema:
roundData : { playsArray : [ { player1 : { card1 : 1, card2 : 2 }, player2 : { card1 : 0, card2 : 0 } }, ],Entonces, básicamente, quiero una sola matriz que contenga un objeto dentro de ese objeto que son dos objetos.
Reproduce Array [objeto1, objeto2] donde el objeto 1 sería {jugador 1: {carta1: 0, carta2: 0}}, {jugador 2: {carta1: 0, carta2: 0}}.
Cada vez que trato de escribir una función updateOne, en el mejor de los casos solo actualiza el jugador 1 o separa el jugador 1 y el jugador 2 como dos elementos en la matriz. ¿Alguna sugerencia de lo que estoy haciendo mal en el formateo?
Aquí está mi código actual:
const gameData = await GameData.updateOne({ gameId: gameIdInput }, { $push: { "matchData.roundData.playsArray": { $each : [ {"player1" : {"card1" : 0, "card2" :0} }, {"player2" : {"card1" : 0, "card2" :0} } ] } } } );Esto funciona, pero empuja al jugador 1 y al jugador 2 a la matriz por separado para que la matriz se convierta en [objetos del jugador 1/2, objetos del jugador 1, objetos del jugador 2].
¡No importa! Me faltaba [ ] alrededor del objeto en una versión anterior sin $each. Dejando aquí para la solución si alguien lo encuentra útil.
const gameData = await GameData.updateOne({ gameId: gameIdInput }, { $push: { "matchData.roundData.playsArray": [ {"player1" : {"card1" : 0, "card2" :0} }, {"player2" : {"card1" : 0, "card2" :0} } ] } } );