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

Javascript mongoDB-如何在多个文档中查找和排序多个字段,并将它们存储在单个数组中?,javascript,arrays,mongodb,sorting,mongodb-query,Javascript,Arrays,Mongodb,Sorting,Mongodb Query,标题很好地描述了这个问题。我有一个名为“结果”的集合,其中包含多个文档: { "_id" : "item_e4a2086048057ac9", "home" : "FH>87218379012", "username:" : "Jon Doe", "Apps" : { "game" : { "InVals" : { "ET" : { "et1" :

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

{
    "_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”值按降序排列在一个数组中

这是可能的还是我必须更改集合中的某些内容?

您可以使用来匹配您的
PAT
值,按该字段排序,并向数组中的值添加一个阶段:

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

谢谢,虽然这听起来很合乎逻辑,但当我将您的命令粘贴到chrome浏览器控制台时,我收到了错误消息
uncaughtreferenceerror:db未定义。我还通读了“aggregate”的文档,命令的编写方式与您一样:
db.results.aggregate
。你知道我做错了什么吗?@Jaybruh你做错的是“粘贴到chrome浏览器控制台”。这不是您在浏览器中运行的代码。您在这里实际期望的是什么?短片段建议您对每个文档的
“OutVals”
中的值进行“排序”。如何处理这些文件?你需要在哪里“分类”它们?这是否需要对结果进行“分页”,或者只是一小部分数据,您希望在其中处理这些按顺序返回的值?好的,也许我应该指定我要执行的操作。因此,OutVals(相同)中的“PAT”值或“ET”存储在集合“results”中的每个文档的上述结构中。我需要从每一个在“home”中有“FH>87218379012”的文档中获取每一个“PAT”,因为我需要以降序将每个“home”的这些值可视化到条形图中。在本例中,从74开始,而不是4,第三高,等等。由于条形图读取此结构中的输入[74,4…],我考虑将数据库中的查询数据保存在var resultsArray=[…]中。保存在哪里?您下面的评论并不能让人相信您甚至理解查询需要运行的环境。您真正需要的是从返回的每个文档中提取“一个值”,这相当简单。您使用哪个库连接MongoDB?我使用Meteor Blaze。是的,我是mongoDB新手,只想从中获取数据,并将数据可视化到条形图中。因此,您需要
resultsArray=collection.find({home:FH>87218379012},{fields:{PAT:1})。fetch().map(d=>d.PAT)
Where
collection
是当前范围内流星收藏的名称。然后,您可以
.sort()
作为
集合进行检索。查找({home:FH>87218379012},{fields:{PAT:1},sort:{PAT:-1})。fetch()
或对结果数组应用常规JavaScript
.sort()