如何在MongoDB Shell中查询嵌套模型并输出指定格式数据?
MongoDB Shell查询:输出资源ID对应合同ID及状态
没问题,我来帮你实现这个需求!假设你的Resources集合中文档的结构大致包含一个存储合同信息的数组(比如contracts),类似这样:
{ "_id": "res_123", "contracts": [ {"contractId": "con_456", "status": "active"}, {"contractId": "con_789", "status": "expired"} ], // 其他字段... }
你可以在Mongo Shell中执行以下脚本,就能得到_id - contractId - status格式的输出:
// 遍历Resources集合的所有文档 db.Resources.find().forEach(function(doc) { // 检查当前文档是否存在有效的contracts数组 if (doc.contracts && Array.isArray(doc.contracts) && doc.contracts.length > 0) { // 遍历每个合同,输出指定格式 doc.contracts.forEach(function(contract) { // 处理字段缺失的情况,避免报错 const contractId = contract.contractId || "[缺失contractId]"; const status = contract.status || "[缺失status]"; print(`${doc._id} - ${contractId} - ${status}`); }); } else { // 处理没有合同的文档 print(`${doc._id} - [无关联合同信息]`); } });
小提示:
- 如果你的合同数组字段名不是
contracts(比如叫contractList),记得把代码里的doc.contracts替换成实际字段名 - 如果
contractId或status的字段名有差异,也要对应调整变量里的字段引用 - 执行前先通过
use your_database_name切换到目标数据库
内容的提问来源于stack exchange,提问作者user3190153
相关产品推荐
相关产品推荐

