gpt4 book ai didi

python - 按出现次数对数组进行排序 mongodb

转载 作者:行者123 更新时间:2023-12-04 07:28:27 25 4
gpt4 key购买 nike

是否可以按出现次数对数组进行排序?
例如,给定

    {
"_id": {
"$oid": "60d20d342c7951852a21s53a"
},
"site": "www.xyz.ie",
"A": ["mary", "jamie", "john", "mary", "mary", "john"],
}
返回
    {
"_id": {
"$oid": "60d20d342c7951852a21s53a"
},
"site": "www.xyz.ie",
"A": ["mary", "jamie", "john", "mary", "mary", "john"],
"sorted_A" : ["mary","john","jamie"]
}
我能够在大多数情况下获得它,但我无法弄清楚如何将它们全部重新组合成一个数组。
我一直在使用聚合管道
  • $match 开头找到我想要的网站
  • 然后$unwind带路径:"$A"
  • 下一个 $sortByCount"$A"
  • ???我不知道如何将它们重新组合在一起。

  • 这是管道:
    [
    {
    '$match': {
    'site': 'www.xyz.ie'
    }
    }, {
    '$unwind': {
    'path': '$A'
    }
    }, {
    '$sortByCount': '$A'
    }, {
    ????
    }
    ]

    最佳答案

  • $group nu _idA ,抢先site并计算总元素
  • $sort来自 count按降序排列
  • $group仅来自 _id并获得第一 site , 并构造 A 的数组
  • [
    { $match: { site: "www.xyz.ie" } },
    { $unwind: "$A" },
    {
    $group: {
    _id: { _id: "$_id", A: "$A" },
    site: { $first: "$site" },
    count: { $sum: 1 }
    }
    },
    { $sort: { count: -1 } },
    {
    $group: {
    _id: "$_id._id",
    site: { $first: "$site" },
    A: { $push: "$_id.A" }
    }
    }
    ]
    Playground

    关于python - 按出现次数对数组进行排序 mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68097649/

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