Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

219
Vistas
mongoose schema findone y subdocumento de matriz de actualización

Este es mi esquema de mangosta:

userId es un número único generado por Okta para los perfiles de usuario. '''

 var book_listSchema = new mongoose.Schema({ userId:{type: String, required: true}, first_name: { type: String, required: true}, last_name:{ type: String, required: true}, newList: [{ list_name: String, books: [{ book_name: {type: String, required: true}, book_author: {type: String, required: true}, date_added: {type: Date, default: Date.now}, date_finished: {type: Date, default: Date.now}, }]}], }); '''

Este es el código que estoy usando para buscar y actualizar, agregando un libro a la matriz de libros.

 ''' book_list.findOneAndUpdate({"userId": req.userContext.userinfo.sub, newList:{"newList.list_name": list_name}}, {$push:{books:{book_name: title, book_author:author, date_added: new Date()}}} '''

La matriz de libros no se actualiza y cada objeto en newList tiene el nombre de lista, y hay diferentes listas, cada una con su propia matriz de libros, por lo que la lista correcta debe actualizarse cuando se agrega un libro.

Conjunto de datos de muestra:

 ''' _id:625c81d7622b044fb297ce54 userId:"00uvgyn7OikAwud6" first_name:"John" last_name:"Smith" newList:Array 0:Object list_name:"read" books:Array 0:Object book_name:"The Great Gatsby" book_author:"Francis Scott Fitzgerald" date_added:2022-04-19T00:43:24.248+00:00 _id:625e05ac083663dc44f37804 date_finished:2022-04-19T00:43:24.252+00:00 _id:625e05ac083663dc44f37803 __v:0 '''
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

La forma correcta es:

 db.collection.update({ userId: "00uvgyn7OikAwud6", newList: { $elemMatch: { list_name: "read" } } }, { $push: { "newList.$.books": { book_name: "a new book", book_author: "some author", date_added: new Date() } } })

o en su forma de código

 db.collection.update({ userId: req.userContext.userinfo.sub, newList: { $elemMatch: { list_name: list_name } } }, { $push: { "newList.$.books": { book_name: title, book_author: author, date_added: new Date() } } })

$elemMatch le permite hacer coincidir más de un componente dentro del mismo elemento de matriz y luego puede usar $push para agregar el objeto específico en la matriz.

Puede ejecutarlo aquí para verificar la misma consulta https://mongoplayground.net/p/YnzDRfhwpEt

También puede echar un vistazo a la documentación de $elemMatch en este enlace .

Avíseme si tiene algún problema.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda