Me gustaría recuperar un elemento de un subdocumento de matriz en MongoDB.
Este es mi documento actual
_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 } ] }quiero poder conseguir
{ transactionId: 2021-11-02T00:55:52.268Z, itemName: 'banana', purchasePrice: 1, purchaseAmount: 8000 }Traté de usar pero no me da el resultado que quería.
const test = user.findOne({"tradeTransactions.transactionId" : "2021-11-02T00:55:52.268Z"}, {"tradeTransactions.$" : 1, "transactionId" : 0})También lo intenté pero me estaba dando un montón de indefinidos
user.find({ "tradeTransactions": { $elemMatch: {"transactionId": "123"} } }, {"tradeTransactions.$": 1})¿Podría por favor obtener alguna orientación?
Muchísimas gracias.
Intente agregar 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" } } ])deberías usar $filter en $project como este
db.collection.aggregate([ { "$project": { _id: 0, tradeTransactions: { "$filter": { "input": "$tradeTransactions", "as": "t", "cond": { $eq: [ "$$t.transactionId", "2021-11-02T00:55:52.268Z" ] } } } } } ])