我需要使用MongoDB和Node.js获取文档总数。我在下面解释我的代码和文档。
var finalOut=[
{
"location": "NEW DELHI",
"nos_of_fos": 15,
"login_id": [
"9619300317",
"9619300343",
"9619300338",
"9619300351",
"9619300322",
"9619300316",
"9619300323",
"9619300328",
"9619300341",
"9619300309",
"9619300310",
"9619300329",
"9619300353",
"9619300356",
"NORTH@oditeksolutions.com"
],
},
{
"location": "North West Delhi",
"nos_of_fos": 6,
"login_id": [
"9619300355"
],
}
]
以上是我的意见。我在下面解释我的代码。
finalOut.forEach(function(listItem, index){
Feedback.collection.aggregate([
{
$match: {
login_id: {
$in: listItem['login_id']
}
}
},
])
.toArray((cerr,cdocs)=>{
console.log(cdocs);
})
finalOut[index]['total_remarks']=cdocs;
})
这里我需要feedback
文档中存在的所有login_id数组值的总数。
答案 0 :(得分:0)
您不能将forEach
用于异步操作:
在这里,我将使用async库,但您可以使用任何喜欢的库。
async.forEachOf(finalOut, (listItem, index, callback) => {
Feedback.collection.aggregate([
{
$match: {
login_id: {
$in: listItem['login_id']
}
}
},
{
$count: ‘theCount’
}
])
.toArray((cerr,cdocs)=> {
finalOut[index]['total_remarks']=cdocs.theCount;
callback();
})
}, err => {
// here you can access the filled `finalOut` object
});