【发布时间】:2020-07-21 11:23:27
【问题描述】:
我正在使用 Mongo DB,在从聚合查询中获取结果后,映射该查询的结果并尝试将结果推送到数组。在安慰该数组时,它返回一个空数组,但如果我们在地图内部进行控制台,则有 data 。下面是我的代码sn-p
let house = await House.aggregate([
{ $group: { _id: "$houseNumber", count: { $sum: 1 } } },
{ $match: { _id: { $ne: null }, count: { $gt: 1 } } },
{ $project: { houseNumber: "$_id", _id: 0 } },
]);
var arr = [];
house.map(async (hNo) => {
var house2 = await House.find(
{ houseNumber: hNo.houseNumber },
"houseNumber"
);
arr.push(house2);
});
console.log(arr);
我在想异步等待在这里制造问题。请帮我。非常感谢。
【问题讨论】:
-
您不需要在
house.map循环中运行多个查询。您可以通过House.find( { houseNumber: { $in: house.map(h => h.houseNumber)}}, "houseNumber" );在单个查询中获取所有文档。但是您的代码甚至没有意义。您已经拥有来自聚合函数的 houseNumbers。你为什么要进行另一个多次查询,只通过你已经拥有的 houseNumber 获得一个 houseNumber?您想通过 House.find 实现什么目标??
标签: javascript node.js arrays mongodb