Ho il seguente documento:Aggiornare e/o aggiungere proprietà degli elementi dell'array usando req.body tramite Mongoose?
{
"_id" : ObjectId("503b83dfad79cc8d26000004"),
"pdfs" : [
{
"title" : "Test document",
"pdf_id" : ObjectId("504f6793ce351a595d000004"),
"created_at" : ISODate("2012-09-11T16:32:19.276Z")
},
{
"title" : "Some other doc",
"pdf_id" : ObjectId("502bf124b4642341230003f0"),
"created_at" : ISODate("2012-09-11T11:34:19.276Z")
}
]
}
Ora, in una forma in entrata via req.body
, ho 2 campi: title
e description
.
Desidero aggiornare title
e inserire description
per un pdf_id specificato, come posso farlo?
Così, alla fine, il mio documento sarà ora simile:
{
"_id" : ObjectId("503b83dfad79cc8d26000004"),
"pdfs" : [
{
"title" : "This is an UPDATED title",
"description" : "It has an ALL NEW description",
"pdf_id" : ObjectId("504f6793ce351a595d000004"),
"created_at" : ISODate("2012-09-11T16:32:19.276Z")
},
{
"title" : "Some other doc",
"pdf_id" : ObjectId("502bf124b4642341230003f0"),
"created_at" : ISODate("2012-09-11T11:34:19.276Z")
}
]
}
Giusto per essere chiari, sono davvero solo cercando la sintassi Mongoose update
.
Nel '$ set', c'è qualche modo per assegnare queste proprietà in modo dinamico? L'utente non può fornire alcuni, e preferirei non doverli specificare esplicitamente. – k00k
Certo, dovresti semplicemente creare quell'oggetto '$ set' a livello di codice e poi passare quell'oggetto come secondo parametro alla chiamata' update'. Un po 'come in questa altra domanda: http://stackoverflow.com/questions/12184626/nodejs-mongo-insert-into-subdocument-dynamic-fieldname/12185214#12185214 – JohnnyHK
Cool, grazie. Qualcosa che mi ha fatto inciampare, che potrebbe aiutare gli altri: non mi aggiornerebbe quando ho appena impostato il mio array su '[]'. Ho dovuto creare lo schema per l'array e assicurarmi che _id dell'elemento dell'array che stai cercando di aggiornare sia specificato come 'type: Schema.Types.ObjectId' nello schema. – k00k