我正在开发一个利用MongoDB存储大量数据的NodeJs应用程序。使用“.find”或“.findOne”查询函数检索数据。
const collection = db.collection('recordings');
collection.find({}, {fields: ['header']}).toArray()
.then(documents => {
console.log(documents);
resolve(documents);
})
.catch(error => reject(error));
应用程序是使用Electron Js构建的,因此我可以通过chrome开发人员工具检查数据:
拥有这些getter和setter会使应用程序变得非常慢。由于数据也在D3-Chart中可视化,我想出了一个相当奇怪的解决方案来删除所有功能:
JSON.parse(JSON.stringify(documents))
如果没有这个额外的步骤,图表就会开始断断续续。
有没有更好的方法来检索原始结果而不循环遍历所有文档以删除不必要的getter和setter函数?
谢谢。
答案 0 :(得分:2)
肯定不在mongo中的问题。我也对这一行{fields: ['header']}
感到困惑。
如果您只想要标题字段,则需要像这样查询
collection.find({}, {'header': 1, _id: 0}).toArray()
。
https://docs.mongodb.com/v3.0/tutorial/project-fields-from-query-results/
希望这有帮助。
答案 1 :(得分:0)
按照这篇文章的建议后我得到了解决方案: https://stackoverflow.com/a/38490959/1292336
仅当您将Electron渲染器进程直接连接到mongo数据库时,才会出现此问题。 您应该使用主进程并使用ipc传输每个查询的结果。
感谢Mykola Borysyuk和Marc重建这个问题:)