Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

469
Views
Mongoose: cómo empujar un objeto en una matriz anidada de objetos

Tengo esta estructura de datos en mi base de datos MongoDb:

 "menu": [ { "dishCategory":"61e6089f209b802518e2b4a4", "dishMeals": [ { "dishMealName": "Burger King", "dishMealIngredients": "Burger lepinja, bbq sos, berlin sos, zelena" "dishMealPrice": 5 } ] } ]

¿Cómo presiono un nuevo objeto dentro de dishMeals en la categoría de plato exacta (estoy proporcionando el id de categoría de plato, el objeto de plato nuevo y el _id de restaurante a través de req.body) He intentado esto pero nada cambia:

 await Restaurants.updateOne( { '_id' : _id, 'menu.dishCategory' : dishCategoryId }, { $push : { 'menu.$.dishMeals' : newDish } } );
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

  1. Use arrayFilters para filtrar los documentos anidados en el campo de matriz, luego $push si se cumplen los criterios de filtro en arrayFilters .
 db.collection.update({ "_id": _id, "menu.dishCategory": dishCategoryId }, { $push: { "menu.$[menu].dishMeals": newDish } }, { arrayFilters: [ { "menu.dishCategory": dishCategoryId } ] })

Ejemplo de parque infantil de Mongo

over 4 years ago · Santiago Trujillo Report

0

Puede hacerlo con la configuración de arrayFilters en la consulta de update :

 db.collection.update({ "restaurant_id": 1 }, { "$push": { "menu.$[element].dishMeals": { "dishMealName": "Best Burger", "dishMealIngredients": "Best burger in town", "dishMealPrice": 10 } } }, { "arrayFilters": [ { "element.dishCategory._id": "61e6089f209b802518e2b4a4" } ] })

ejemplo de trabajo

over 4 years ago · Santiago Trujillo Report

0

Puede leer la pregunta y la solución que proporcionaron aquí . Espero que esta le sea útil.

 db.collection.update({ "_id": 1, "menu.dishCategory": "61e6089f209b802518e2b4a4" }, { $push: { "menu.$.dishMeals": newMeal } })
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!