【问题标题】:read nested JSON with the .find() Method使用 .find() 方法读取嵌套的 JSON
【发布时间】:2021-11-27 06:43:09
【问题描述】:

我一直无法读取保存在 MongoDB 中的嵌套 JSON 元素。我正在尝试使用以下方法:

blockChainModel.find({"transactions.user": "eltaieyo"}, null, {projection : { transactions: {user : 1}} }, (err, blocks) => {
            if (err) console.error("Cannot find the specified Blocks");
            console.log(blocks);
});

我正在尝试读取的 MongoDB 中的 JSON 如下所示: JSON Image

我想读出 "transactions" 部分,这就是我代码中当前方法的作用: OUTPUT Image

也许它正在读出它们,但我的方法没有正确给出它们?

【问题讨论】:

  • 投影应该是第二个参数而不是第三个,也没有投影键{ transactions: {user : 1}},但首先你应该尝试不使用投影。检查这个游乐场mongoplayground.net/p/4DriEYeOzD-
  • @Molda 我做到了,谢谢。它正在返回所有数据,除了事务数组中的嵌套数据。这就是我需要的数据,但它是这样给出的:事务:[[Object],[Object],[Object]]
  • 您看到[Object] 的原因只是console.log 的工作方式,我相信它只显示2 级深度的数据。要查看完整数据,请使用 console.log(JSON.stringify(blocks))console.log(require('util').inspect(blocks))

标签: node.js json mongodb transactions nested-json


【解决方案1】:

删除projection再试试看是否真的有数据返回如何?

【讨论】:

  • 正在返回数据,正在返回整个事务,但是存储在“事务”部分中的必要信息只是这样输出:事务:[[对象],[对象] , [对象] ]
  • 您是否使用console.log() 来检查值,如果是,您可能需要JSON.stringify() 来显示[对象]
  • 目前我正在使用console.log() 发出交易。我只是在做一个块链原型,之后将在一个更大的项目中使用这就是为什么我只是使用 console.log() 来检查一切是否正常。如果我做 JSON.stringify(blocks),它会做和以前一样的事情。可能是我用错了
  • 我认为数据很好,它实际上返回了变量中的内容。
  • 感谢您的帮助和时间。它现在给出了我想要的数据。祝你有美好的一天;)
猜你喜欢
  • 2019-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-31
  • 1970-01-01
  • 1970-01-01
  • 2021-05-24
相关资源
最近更新 更多