/ / MongoDB Monk $ push a una matriz en un objeto en una matriz - node.js, mongodb

MongoDB Monk $ push a una matriz en un objeto en una matriz - node.js, mongodb

Hola a todos: Estoy tratando de $ empujar una cadena a una matriz en un objeto en una matriz. He estado jugando con mi código NodeJS durante horas pero no puedo resolver esto. A continuación se muestra un ejemplo de los datos con los que estoy trabajando.

{
"_id" : ObjectId("5890c87051e301f17d9ba814"),
"comments" : [
{
"5890db366a29d63612e1f8f5" : {
"eventName" : "111",
"startDateTime" : ISODate("2017-01-31T18:50:00Z")
}
}
]

}

Me gustaría enviar a una matriz llamada "matriz" que aparecerá justo debajo de startDateTime.

Actualmente estoy intentando algo como esto:

$push: { ["comments." + ObjectID(rateReviewObject.eventID) + ".array"] : rateReviewObject.comment }

MongoError: no se puede usar la parte (comentarios de comentarios.5890db366a29d63612e1f8f5.array) para atravesar el elemento ({comentarios: [{5890db366a29d63612e1f8f5: {eventName: "111", startDateTime: new Date (1485888600000))}]))

¿Puede alguien ayudarme?

EDITAR Consulta completa:

// add the optional review (comment) to the instructor"s list of comments in the DB
commentCollection.update(
{ _id : ObjectID(rateReviewObject.instructorID) },
{
$addToSet:
{
comments:
{
eventID: ObjectID(rateReviewObject.eventID),
eventName: rateReviewObject.eventName,
startDateTime: new Date(rateReviewObject.startDateTime)
}
},
$push: { ["comments." + ObjectID(rateReviewObject.eventID) + ".array"] : rateReviewObject.comment }
},
{ upsert: true }, // create a new document for the instructor if this is their first review

Respuestas

2 para la respuesta № 1

Puedes usar $ operador posicional que devuelveel índice del primer elemento coincidente de la matriz en combinación con el operador $ existe que comprueba si existe una clave o no en el documento. Tu caso será:

db.collection.update({
"_id" : ObjectId("5890c87051e301f17d9ba814"),
"comments.5890db366a29d63612e1f8f5":{$exists:true}
},{
$push:{
"comments.$.array":rateReviewObject.comment
}
})

para más https://docs.mongodb.com/manual/reference/operator/update/positional/