returns _id in MongoDB 与 JavaScript 的脚本
Script that returns _id in MongoDB with JavaScript
我需要一个 javascript 代码将 _id 保存在变量中 我在获取 _id 时遇到了问题,因为它在一个数组中。
我找遍了所有地方,但找不到解决方案。
{
"_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"
}
]
}
我要cartoes _id
"cartoes": [
{
"_id": {
"$oid": "626bacea1847f675e47b2bd7"
},
我想要这样的东西:
let conta = db.banco.findOne({"tipo": "conta"});
idConta = conta._id;
console.log("id: " + idConta);//id: 626bacea1847f675e47b2bd8
编辑:
根据评论,我了解到您想输入 num_cartao
值并获得此 cartao
的 _id 的输出。您可以为此使用聚合:
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: 626bacea1847f675e47b2bd7
正如您在此 playground
上所见,这将为您提供您想要的
你先 $match
右边 num_cartao
的文档,然后 $filter
来自 cartoes
数组的右边的 carto,然后你将它格式化为字符串。
我需要一个 javascript 代码将 _id 保存在变量中 我在获取 _id 时遇到了问题,因为它在一个数组中。
我找遍了所有地方,但找不到解决方案。
{
"_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"
}
]
}
我要cartoes _id
"cartoes": [
{
"_id": {
"$oid": "626bacea1847f675e47b2bd7"
},
我想要这样的东西:
let conta = db.banco.findOne({"tipo": "conta"});
idConta = conta._id;
console.log("id: " + idConta);//id: 626bacea1847f675e47b2bd8
编辑:
根据评论,我了解到您想输入 num_cartao
值并获得此 cartao
的 _id 的输出。您可以为此使用聚合:
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: 626bacea1847f675e47b2bd7
正如您在此 playground
上所见,这将为您提供您想要的你先 $match
右边 num_cartao
的文档,然后 $filter
来自 cartoes
数组的右边的 carto,然后你将它格式化为字符串。