gpt4 book ai didi

MongoDB 聚合和投影

转载 作者:行者123 更新时间:2023-12-03 15:59:39 24 4
gpt4 key购买 nike

有人可以帮助我查询按日期升序对数组进行排序并显示 cCode 吗?我能够对数组进行排序并对其进行投影,但无法将 cCode 与 bal 数组一起投影,

db.collection.aggregate([
{ "$match": {
"_id": {
"$eq": {
"a": "NA",
"b": "HXYZ",
"c": "12345",
"d": "AA"
}
}
}},
{ "$unwind": "$bal" },
{ "$sort": { "bal.date": 1 }},
{ "$group": {"_id": "$_id",
"bal": {"$push": "$bal"}}},
{ $project: {
bal: { $slice: ["$bal",2]} ,"cCode": 1}
}
])

我的收藏:

/* 1 */
{
"_id" : {
"a" : "NA",
"b" : "HXYZ",
"c" : "12345",
"d" : "AA"
},
"cCode" : "HHH",

"bal" : [
{
"type" : "E",
"date" : "2015-08-02"

},

{
"type" : "E",
"date" : "2015-08-01"


},
{
"type" : "E",
"date" : "2015-07-07"


}

]
}

请帮我看看上面的查询有什么问题。提前致谢。

最佳答案

当您使用$group阶段时,您的cCode字段消失了。因此,要在管道中再次获取该字段,您需要使用 $first 聚合。像这样的事情

db.collection.aggregate([
{ "$match": {
"_id": { "$eq": { "a": "NA", "b": "HXYZ", "c": "12345", "d": "AA" }}
}},
{ "$unwind": "$bal" },
{ "$sort": { "bal.date": 1 }},
{ "$group": {
"_id": "$_id",
"bal": { "$push": "$bal" },
"cCode": { "$first": "$cCode" }
}},
{ "$project": { "bal": { "$slice": ["$bal", 2] } ,"cCode": 1 }}
])

关于MongoDB 聚合和投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52325467/

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