872183-6ren">
gpt4 book ai didi

javascript - mongoDB - 如何在多个文档中查找和排序多个字段并将它们存储在单个数组中?

转载 作者:行者123 更新时间:2023-12-03 03:48:34 26 4
gpt4 key购买 nike

我认为标题很好地描述了问题。我有一个名为“结果”的集合,其中包含多个文档:

{
"_id" : "item_e4a2086048057ac9",
"home" : "FH>87218379012",
"username:" : "Jon Doe",
"Apps" : {
"game" : {
"InVals" : {
"ET" : {
"et1" : 1,
"et2" : 88,
"et3" : 7,
"et4" : 0.68,
"et5" : 5253,
"et6" : "7233-AL",
"et7" : "23-PL",
"et8" : "791-GY"
}
},
"OutVals" : {
"ET" : 74.00
}
}
},
"PAT" : 74
}

第二个文档:

{
"_id" : "item_a90a2086048057ac9",
"home" : "FH>87218379012",
"username:" : "Jon Doe2",
"Apps" : {
"game" : {
"InVals" : {
"ET" : {
"et1" : 0,
"et2" : 9,
"et3" : 96,
"et4" : 3218,
"et5" : 6,
"et6" : "65-AL",
"et7" : "265-PL",
"et8" : "4-GY"
}
},
"OutVals" : {
"ET" : 4.00
}
}
},
"PAT" : 4
}

等等...现在我需要查询特定文档中的所有“PAT”字段,其中字段“home”等于“FH>87218379012”,然后按降序对它们进行排序并将它们存储在一个数组变量中:

var resultsArray = [74, 4....,n];

如果有一个解决方案,我必须将每个“PAT”值存储在一个变量中,对它们进行排序并稍后将它们保存在一个数组中,那也是可以的。最后,我只需要将“FH>87218379012”作为“home”的文档的所有“PAT”值按降序排列在数组中。

这可能吗?还是我必须更改我的收藏中的某些内容?

最佳答案

您可以使用aggregation要匹配您的 PAT 值,请按该字段排序并添加 $group阶段到 $push数组的值:

db.coll.aggregate([{
$match: {
home: "FH>87218379012"
}
}, {
$sort: { PAT: -1 }
}, {
$group: {
_id: null,
result: {
$push: "$PAT"
}
}
}])

关于javascript - mongoDB - 如何在多个文档中查找和排序多个字段并将它们存储在单个数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45266137/

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