arrays - 对存储在变量中的 mongo 查询执行 2 个单独的 .map 操作
问题描述
我将此查询存储在一个变量中,如下所示
var recent_Polls = db.Trump_Vs_Biden_V1.aggregate(
[
{ $match : {"State":state_Val}},
{$sort:{"Date":-1}},
{$limit: 5 }
]
)
它返回这 5 个文件
正如您在每个文档中看到的那样
“拜登”:59,“特朗普”:32
我希望将所有拜登值放入一个数组中,将所有王牌值放入一个单独的数组中,以便我可以对它们执行数学运算。
因此,例如,这是我想要的所有王牌值的期望输出..
[
36,
32,
32,
31,
36
]
反之亦然...
为了做到这一点,我尝试使用 .map 函数。
var trump_Nums = recent_Polls.map(function(e2){return e2.Trump})
这有效,但是当我尝试对拜登值执行完全相同的操作时
recent_Polls.map(function(e2){return e2.Biden})
我得到一个空数组作为回报..
我想知道是否有人能想到解决这个问题的方法,我可以一次将王牌和拜登值全部检索到 2 个单独的数组中。那可能更有效..
解决方案
要在客户端获得此功能,您可以尝试 forEach:
var trump_Nums = [];
var biden_Nums = [];
recent_Polls.forEach(function(e2){
trump_Nums.push(e2.Trump);
biden_Nums.push(e2.Biden)
});
要从服务器获取此信息,请将 $group 阶段添加到聚合中:
{$group: {
_id:null,
Biden:{$push: "$Biden"},
Trump:{$push: "$Trump"}
}}
如果您在需要数字的同时需要完整的文档,请在原始聚合中添加一个 $facet 阶段:
{$facet: {
documents:[{$match:{}}],
numbers: [{$group: {
_id:null,
Biden:{$push: "$Biden"},
Trump:{$push: "$Trump"}
}}]
}}
推荐阅读
- dynamics-crm - Microsoft Dynamics 365 通过 Microsoft Flow 批量更新/导入
- c++ - 在没有共享 COM 对象的情况下使用 COM STA 或 MTA?
- flutter - 如何显示 Image.memory
- request - 使用 cypress 将请求标头传递给所有请求
- tensorflow - tensorflow.python.keras 和 tensorflow.keras 有什么区别?
- chatbase - 无法从控制台中删除不需要的平台
- java - 当我编译我的程序时,我得到 Error-SampleApplet.java 使用或覆盖已弃用的 API。并使用 -xlint:deprecation 重新编译以获取详细信息
- ios - Fabric 通知我 iOS 应用程序的“稳定性警报”,而应用程序运行良好且没有任何崩溃
- java - 无法在 Linux 服务器中执行 java 代码
- python - 在 Python 中存储多个二维数组