Necesito un código javascript que guarde en una variable el _id . Tengo problemas para obtener ese _id porque está dentro de una matriz.
He buscado por todas partes pero no puedo encontrar una solución para esto.
{ "_id": { "$oid": "626bacea1847f675e47b2bd8" }, "tipo": "conta", "data_abertura": { "$date": "2013-02-19T00:00:00Z" }, "observacoes": "Sem observações", "iban": "PT50000506515926456299903", "saldo": 1456.23, "bic": "BBPIPTPL001", "tipo_conta": "Conta Ordenado", "cartoes": [ { "_id": { "$oid": "626bacea1847f675e47b2bd7" }, "num_cartao": 4908509005925727, "nome_cartao": "João Correia", "validade": { "$date": "2025-10-03T00:00:00Z" }, "pin": 5609, "cvc": 975, "estado": "Ativo", "tipo_cartao": "Crédito" } ], "permissoes": { "levantamentos": true, "depositos": true, "pagamentos": true, "transferencias": true, "creditos": true, "acoes": true }, "titulares": [ { "$oid": "626bacea1847f675e47b2bd6" } ] }quiero los cartoes _id
"cartoes": [ { "_id": { "$oid": "626bacea1847f675e47b2bd7" },Quiero algo como esto:
let conta = db.banco.findOne({"tipo": "conta"}); idConta = conta._id; console.log("id: " + idConta);//id: 626bacea1847f675e47b2bd8Editar:
De acuerdo con los comentarios, entiendo que desea ingresar el valor num_cartao y obtener una salida del _id de este cartao . Puedes usar una agregación para esto:
const cartao_id = await db.collection.aggregate([ { $match: {cartoes: {$elemMatch: {"num_cartao": 4908509005925727}}} }, { $project: { cartoes: { $filter: { input: "$cartoes", as: "item", cond: {$eq: ["$$item.num_cartao", 4908509005925727]} } } } }, { $project: { data: {"$arrayElemAt": ["$cartoes", 0]} } }, { $project: { _id: {$toString: "$data._id"} } } ]) console.log(`cartao_id: ${cartao_id}`);//id: 626bacea1847f675e47b2bd7Eso te proporcionará lo que quieres, como puedes ver en este patio de recreo .
Primero $match los documentos con el num_cartao correcto, luego $filter el carto correcto de la matriz de cartoes y luego lo formatea en cadena.