gpt4 book ai didi

node.js - 如何使用nodejs获取Mongodb查询集中每列的唯一值

转载 作者:太空宇宙 更新时间:2023-11-03 22:39:47 25 4
gpt4 key购买 nike

我正在使用nodejs从mongodb集合中获取数据。
我从集合中获取了所有数据,但我希望获得预期结果中的结果。
我得到的结果与数据中一样。我必须获得下面提到的过滤器的结果。请帮助我做到这一点

 db.collection('collection_name').find({}).toArray(function(err, items) 
{
if(err){
console.log(err)
return res.send(500,'something went wrong')
}
else{
res.send({"ISM": items})
}
})

我得到的结果如下:

 {"data": [{
"CARD_VENDOR": "123",
"TRANSACTION_AMOUNT": "44938.72",
},
{
"CARD_VENDOR": "012",
"TRANSACTION_AMOUNT": "1000.00",
},
{
"CARD_VENDOR": "234",
"TRANSACTION_AMOUNT": "44938.72",
}]
}

预期结果:

   {"data": [{
"CARD_VENDOR": "123",
"TRANSACTION_AMOUNT": "44938.72",
},
{
"CARD_VENDOR": "012",
"TRANSACTION_AMOUNT": "1000.00",
},
{
"CARD_VENDOR": "234",
"TRANSACTION_AMOUNT": "44938.72",
}]
},
"filters":{
"CARD_VENDOR" : ["123","012","234"],
"TRANSACTION_AMOUNT": [44938.72,1000.00]
}

最佳答案

要获得所需的结果,您需要对使用 $facet 的集合运行聚合操作。 允许您处理的管道在同一组输入文档的单个阶段内的多个聚合管道。每个子管道在输出文档中都有自己的字段,其结果存储为文档数组。

在这种情况下,您的聚合管道将如下所示:

const pipeline = [
{ '$facet': {
'data': [
{ '$match': {} }
],
'filters': [
{ '$group': {
'_id': null,
'CARD_VENDOR': { '$push': '$CARD_VENDOR' },
'TRANSACTION_AMOUNT': { '$push': '$TRANSACTION_AMOUNT' }
} },
{ '$project': {
'_id': 0
} }
]
} },
{ '$addFields': {
'filters': { '$arrayElemAt': ['$filters', 0 ] }
} }
]

db.collection('collection_name').aggregate(pipeline, (err, results) => {
if (err){
console.log(err)
return res.send(500, 'something went wrong')
} else {
console.log(results)
res.send({ "ISM": results })
}
})

关于node.js - 如何使用nodejs获取Mongodb查询集中每列的唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52734065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com