【发布时间】:2020-07-16 08:57:52
【问题描述】:
我在 MongoDB 中的聚合框架有问题。这个问题是我把MongoDB中的数据保存在Array中造成的。
我想要这样,当数据保存时它不在数组中。下面的截图说明。
这是我在 MongoDB 中保存数据的方法。这部分是主要问题 - const myobj = { Name: symbol, Array: BTCdata[0], Date: dateTime }; 如您所见,我有一个 Array: BTCdata[0],这是我第一次打开数组,因为在我在数组中放置数组之前。 (检查屏幕截图)。在其中一张屏幕截图中,您可以看到 2 个数组。数组 > 数组 > 0 > 对象。就在我使用Array:BTCdata 时,当我更改为Array:BTCdata[0] 时,数组消失了。
如何打开另一个数组,该数组与第二个屏幕截图中的数据相同?我只是不需要这些数组,因为我无法正确使用聚合。
有问题的代码区域
let db = await MongoClient.connect(url, { useUnifiedTopology: true });
const dbo = db.db('Crypto');
const myobj = { Name: symbol, Array: BTCdata[0], Date: dateTime };
await dbo.collection(symbol).insertOne(myobj);
console.log('1 document inserted');
db.close();
从 API 接收数据的代码部分
const btcusdtdata = data.map(d => {
return {
Open: parseFloat(d[1]),
High: parseFloat(d[2]),
Low: parseFloat(d[3]),
Close: parseFloat(d[4]),
Volume: parseFloat(d[5]),
Timespan: 30,
}
});
如果需要,我可以添加完整代码以显示完整逻辑。
EDIT1 我尝试了@Molda 建议的方式
const myobj = { Name: symbol, Array: BTCdata[0][0], Date: dateTime };
我在 MongoDB 中收到该数组为空。里面没有任何数据。
EDIT2 正如@prasad_ 所要求的,这里是 JSON 视图。我希望我做得对。这是我调用 API 后收到的(来自我的终端的结果)
[
{
Open: 0.0000135,
High: 0.00001355,
Low: 0.00001337,
Close: 0.0000134,
Volume: 7584645,
Timespan: 30
}
]
【问题讨论】:
-
要获取内部对象,请使用另一个
[0],就像BTCdata[0][0],然后您可以使用var data = Object.assign({ _id: .., Name: ..}, BTCdata[0][0]);扩展带有_id 和名称的对象 -
@Molda 感谢您的回答!我试过你的方法,它不起作用。我收到“空”而不是数据。您是否在我的示例中显示了可能性?也许我错误地声明了它。我会用你的尝试编辑主要问题
-
请将示例文档以 JSON 格式发布(文本格式正确)。
-
@prasad_ 感谢您的回答!我编辑了主要问题,希望我能正确理解您的要求。请检查 EDIT2。