簡體   English   中英

mongoDB-如何在多個文檔中查找和排序多個字段並將它們存儲在單個數組中?

[英]mongoDB - How to find and sort multiple fields in several documents and store them in a single array?

標題很好地描述了我認為的問題。 我有一個包含服務器文檔的名為“結果”的集合:

{
    "_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值,按該字段排序並添加$ group階段以推入數組:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM