You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB中使用cursor打印对象异常:printjson输出[object Object]

MongoDB中printjson打印文档显示[object Object]的问题

我创建了如下简单集合:

use('biblioteca')

db.inventory.insertOne({
    libro: 'El principe de la niebla',
    autor: 'Carlos Ruiz Zafon',
    precio: 20,
    paginas: 240,
    lanzamiento: 1991,
    editorial: 'Planeta'
})

执行以下代码可正常显示autor字段:

var cursorArray = db.inventory.find({}).toArray()
print(cursorArray[0].autor)

但尝试用printjson(cursorArray[0])打印文档时,结果显示为[object Object]。这不应该以JSON格式显示文档吗?我哪里理解有误?


原因与解决方法

出现[object Object]是因为你大概率在非MongoDB Shell(mongosh)环境中执行了代码——printjson是mongosh专属的内置函数,仅在该环境下能正确格式化BSON文档为可读的JSON输出。在Node.js或其他普通JS运行环境中,printjson并不存在,JS引擎会默认将其当作普通print函数处理,直接打印对象就会输出[object Object]。

如果是在mongosh中运行,printjson会正常输出格式化后的文档。如果是在外部环境,对应解决方式:

  • Node.js环境:使用console.log(JSON.stringify(cursorArray[0], null, 2)),第二个和第三个参数可以生成带缩进的美观格式;
  • 若使用MongoDB Node.js驱动,还可以用EJSON.stringify()处理BSON类型(比如ObjectId、Date)的序列化,避免普通JSON.stringify丢失或错误转换特殊类型:
    const { EJSON } = require('mongodb');
    console.log(EJSON.stringify(cursorArray[0], null, 2));
    

如果确实是在mongosh中遇到这个问题,建议重启shell或升级到最新版mongosh排查异常。

内容的提问来源于stack exchange,提问作者Joncarre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 16:20:00