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

150
Visualizações
Getting an element from subdocument in mongodb

I would like to retrieve an element from an array subdocument in MongoDB.

This is my current document

  _id: new ObjectId("6175d614c5a8d65745253aca"),
  fullname: "I'm Admin",
  password: '$2b$10$MNsk4ODki0bdSpliKthdb.0KGvy4xkBxxeadfg2TnQAZf810SQ.3q',
  mobile: '88888888',
  email: 'admin@gmail.com',
  accountBalance: 979000,
  __v: 0,
  tradeTransactions: [
    {
      transactionId: 2021-11-02T00:55:52.268Z,
      itemName: 'banana',
      purchasePrice: 1,
      purchaseAmount: 8000
    },
    {
      transactionId: 123,
      itemName: 'apple',
      purchasePrice: 2,
      purchaseAmount: 5000
    }
  ]
}

I want to be able to get

    {
      transactionId: 2021-11-02T00:55:52.268Z,
      itemName: 'banana',
      purchasePrice: 1,
      purchaseAmount: 8000
    }

I tried to use but it doesn't give me the result that I wanted.

const test = user.findOne({"tradeTransactions.transactionId" : "2021-11-02T00:55:52.268Z"}, {"tradeTransactions.$" : 1, "transactionId" : 0})

I also tried but it was giving me a bunch of undefined

user.find({
            "tradeTransactions": {
              $elemMatch: {"transactionId": "123"}
            }
          },
          {"tradeTransactions.$": 1})   

Could I please get some guidance?

Thank you very much.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Try agregate https://mongoplayground.net/p/dDUJO944DIP

user.collection.aggregate([
  { $match: { _id: ObjectId("6175d614c5a8d65745253aca") } },
  { $unwind: "$tradeTransactions" },
  { $match: { "tradeTransactions.transactionId": "2021-11-02T00:55:52.268Z" } },
  { $replaceRoot: { newRoot: "$tradeTransactions" } }
  ])
about 4 years ago · Juan Pablo Isaza Relatório

0

you should use $filter in $project like this

db.collection.aggregate([
  {
    "$project": {
      _id: 0,
      tradeTransactions: {
        "$filter": {
          "input": "$tradeTransactions",
          "as": "t",
          "cond": {
            $eq: [
              "$$t.transactionId",
              "2021-11-02T00:55:52.268Z"
            ]
          }
        }
      }
    }
  }
])

https://mongoplayground.net/p/bUACdhesUI8

about 4 years ago · Juan Pablo Isaza 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