Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

473
Visualizações
Mongoose - How to push object in nested array of objects

I have this data structure in my MongoDb database:

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

How do I push new object inside dishMeals in exact dishCategory ( I am providing dishCategory id, newDish object and _id of restaurant through req.body) I've tried this but nothing is changing:

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

0

  1. Use arrayFilters to filter the nested document(s) in the array field, then $push if the filter criteria in the arrayFilters met.
db.collection.update({
  "_id": _id,
  "menu.dishCategory": dishCategoryId
},
{
  $push: {
    "menu.$[menu].dishMeals": newDish
  }
},
{
  arrayFilters: [
    {
      "menu.dishCategory": dishCategoryId
    }
  ]
})

Sample Mongo Playground

over 4 years ago · Santiago Trujillo Relatório

0

You can do it with arrayFilters config in update query:

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"
    }
  ]
})

Working example

over 4 years ago · Santiago Trujillo Relatório

0

You may read the question and the solution they provided here, Hope this one will be helpful to you.

db.collection.update({
    "_id": 1,
    "menu.dishCategory": "61e6089f209b802518e2b4a4"
},
{
    $push: {
        "menu.$.dishMeals": newMeal
    }
})
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda