MongoDB聚合运算符:$zip

MongoDB聚合运算符:$zip


$zip用于将输入数组的元素重新组合转换为新的数组,重组转换的的规则是使用输入数组的第一个元素重组为第一个数组,使用第二个元素重组为第二个数组,以此类推。

例如,[ [ 1, 2, 3 ], [ "a", "b", "c" ] ]转换后为[ [ 1, "a" ], [ 2, "b" ], [ 3, "c" ] ]

语法

{
   
   
    $zip: {
   
   
        inputs: [ <array expression1>,  ... ],
        useLongestLength: <boolean>,
        defaults:  <array expression>
    }
}
  • inputs:表达式数组,数组的每个表达式可解析为数组。这些输入数组的元素组合成输出数组。
    如果任何一个输入数组的解析值为空或指向一个缺失字段,$zip将返回空值。
    如果输入数组中的任何一个没有解析为数组或空值,或者指向一个缺失字段,$zip将返回错误信息。
  • useLongestLength:布尔值,用于指定最长数组的长度是否决定输出数组中数组的个数。
    默认值为 false,最短数组的长度决定输出数组中数组的个数。
  • 如果输入数组的长度不同,则使用默认元素值数组。必须同时指定 useLongestLength: true,否则$zip将返回错误。
    如果useLongestLength: true,但defaults为空或未指定,$zip将使用null作为默认值。
    如果指定了非空defaults,则必须为每个输入数组指定默认值,否则$zip返回错误。

使用

输入数组的长度不要求相同。默认情况下,输出数组的长度为最短输入数组的长度,但useLongestLength选项可以指定$zip输出与最长输入数组的长度是否一致。

参考下面的例子来说明:

例1:

{
   
    $zip: {
   
    inputs: [ [ "a" ], [ "b" ], [ "c" ] ] }}

结果:

[ [ "a", "b", "c" ] ]

例2:

{
   
    $zip: {
   
    inputs: [ [ "a" ], [ "b", "c" ] ] } }

结果:

[ [ "a", "b" ] ]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

原子星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值