按字段值返回第一个匹配项的数组

萨基斯·阿鲁蒂尼安(Sarkis Arutiunian)

例如我有以下类型的集合:

[
    { batch: false, type: '' },
    { batch: false, type: '' },
    { batch: true, type: '123' },
    { batch: true, type: '123' },
    { batch: true, type: '123' },
    { batch: true, type: '234' },
    { batch: true, type: '234' },
    { batch: true, type: '234' },
    { batch: true, type: '234' },
    { batch: true, type: '567' },
    { batch: true, type: '567' }
]

所以问题是,如何返回具有对象的数组,{batch: false}如果{batch: true}仅返回具有相同{type}字段的第一个对象,基本上我想得到以下响应:

[
    { batch: false, type: '' },
    { batch: false, type: '' },
    { batch: true, type: '123' },
    { batch: true, type: '234' },
    { batch: true, type: '567' }
]
DAXaholic

尝试以下聚合管道

db.getCollection('yourCollection').aggregate([
    {
        $group: {
            _id: {
                k1: {
                    $cond: {
                        if: "$batch",
                        then: null,
                        else: "$_id"
                    }
                },
                k2: "$type"
            },
            batch: { $first: "$batch" },
            type: { $first: "$type" }
        }
    },
    {
        $project: {
            _id: 0,
            batch: 1,
            type: 1
        }
    }
])

导致

/* 1 */
{
    "batch" : false,
    "type" : ""
}

/* 2 */
{
    "batch" : false,
    "type" : ""
}

/* 3 */
{
    "batch" : true,
    "type" : "123"
}

/* 4 */
{
    "batch" : true,
    "type" : "567"
}

/* 5 */
{
    "batch" : true,
    "type" : "234"
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

HtmlAgilityPack仅返回第一个匹配项

来自分类Dev

按熊猫数据框唯一的第一个值分组 - 返回 numpy 数组

来自分类Dev

数组按第一个值排序

来自分类Dev

数组函数仅返回第一个值

来自分类Dev

如果可能,find_by是否总是将匹配项返回到条件数组的第一个?

来自分类Dev

从另一个表返回的值与第一个表的值匹配

来自分类Dev

preg_match仅返回第一个匹配项

来自分类Dev

正则表达式仅返回第一个匹配项

来自分类Dev

mysql查询返回每个结果的第一个匹配项

来自分类Dev

Ruby str.match(regex)返回仅包含第一个匹配项的MatchData

来自分类Dev

DB2返回第一个匹配项

来自分类Dev

返回Java 8流中的第一个匹配项(类似于_.find)

来自分类Dev

pcregrep如何强制返回正则表达式的第一个匹配项

来自分类Dev

Bash grep不返回第一个正则表达式匹配项

来自分类Dev

Python re.findall仅返回第一个匹配项

来自分类Dev

返回Java 8流中的第一个匹配项(类似于_.find)

来自分类Dev

python正则表达式,只返回第一个匹配项

来自分类Dev

Postgres返回数组的最后一项,而不是第一个

来自分类Dev

提取nan之后numpy数组中的第一个匹配项

来自分类Dev

javascript只删除循环中数组中的第一个匹配项

来自分类Dev

在第一个匹配项后循环遍历数组并执行其他操作?

来自分类Dev

在第一个匹配项后循环遍历数组并执行其他操作?

来自分类Dev

如何找到数组之间的第一个匹配项并对其进行格式化

来自分类Dev

返回数组中的第一个和最后一个值

来自分类Dev

PyQuery-attr match仅返回第一个匹配项,而不是所有匹配项

来自分类Dev

仅当存在匹配项时才返回true,但不是第一个匹配项

来自分类Dev

使用awk打印字段的第一个和最后一个匹配项

来自分类Dev

如何匹配具有3列的表,返回第二列的第一个匹配项和第三列的第一个非值?

来自分类Dev

按第一个字段在一行中转换值

Related 相关文章

  1. 1

    HtmlAgilityPack仅返回第一个匹配项

  2. 2

    按熊猫数据框唯一的第一个值分组 - 返回 numpy 数组

  3. 3

    数组按第一个值排序

  4. 4

    数组函数仅返回第一个值

  5. 5

    如果可能,find_by是否总是将匹配项返回到条件数组的第一个?

  6. 6

    从另一个表返回的值与第一个表的值匹配

  7. 7

    preg_match仅返回第一个匹配项

  8. 8

    正则表达式仅返回第一个匹配项

  9. 9

    mysql查询返回每个结果的第一个匹配项

  10. 10

    Ruby str.match(regex)返回仅包含第一个匹配项的MatchData

  11. 11

    DB2返回第一个匹配项

  12. 12

    返回Java 8流中的第一个匹配项(类似于_.find)

  13. 13

    pcregrep如何强制返回正则表达式的第一个匹配项

  14. 14

    Bash grep不返回第一个正则表达式匹配项

  15. 15

    Python re.findall仅返回第一个匹配项

  16. 16

    返回Java 8流中的第一个匹配项(类似于_.find)

  17. 17

    python正则表达式,只返回第一个匹配项

  18. 18

    Postgres返回数组的最后一项,而不是第一个

  19. 19

    提取nan之后numpy数组中的第一个匹配项

  20. 20

    javascript只删除循环中数组中的第一个匹配项

  21. 21

    在第一个匹配项后循环遍历数组并执行其他操作?

  22. 22

    在第一个匹配项后循环遍历数组并执行其他操作?

  23. 23

    如何找到数组之间的第一个匹配项并对其进行格式化

  24. 24

    返回数组中的第一个和最后一个值

  25. 25

    PyQuery-attr match仅返回第一个匹配项,而不是所有匹配项

  26. 26

    仅当存在匹配项时才返回true,但不是第一个匹配项

  27. 27

    使用awk打印字段的第一个和最后一个匹配项

  28. 28

    如何匹配具有3列的表,返回第二列的第一个匹配项和第三列的第一个非值?

  29. 29

    按第一个字段在一行中转换值

热门标签

归档