MongoDB 聚合管道中使用数组表达式运算符合并数组($concatArrays)

数组表达式运算符主要用于文档中数组的操作,接上一篇:
MongoDB 聚合管道中使用数组表达式运算符($slice截取数组)https://blog.csdn.net/m1729339749/article/details/130130328本篇我们主要介绍数组表达式运算符中用于合并数组的操作,下面我们进行详细介绍:

一、语法

{ $concatArrays: [ <array1>, <array2>, ... ] }

        合并多个数组成一个数组

其中,

        array:代表的是数组

二、准备工作

初始化成员数据

db.persons.insertMany([
    { "_id" : "1001", "name" : "张三", "fruits" : [ "apple", "pineapple" ], "toys": [ "橡皮鸭" ] },
    { "_id" : "1002", "name" : "李四", "fruits" : [ "banana", "apple" ] },
    { "_id" : "1003", "name" : "王五", "fruits" : null, "toys": [ "小卡车" ] },
    { "_id" : "1004", "name" : "赵六", "fruits" : [ ], "toys": [ "毛绒鹅" ] },
    { "_id" : "1005", "name" : "田七", "toys": [ "积木" ] },
])

三、示例

例子:合并水果和玩具到喜欢的字段中

db.persons.aggregate([
    {
        $project: {
            "name": 1,
            "favorite": { $concatArrays: [ "$fruits", "$toys" ] }
        }
    }
])

聚合查询的结果如下:

{ "_id" : "1001", "name" : "张三", "favorite" : [ "apple", "pineapple", "橡皮鸭" ] }
{ "_id" : "1002", "name" : "李四", "favorite" : null }
{ "_id" : "1003", "name" : "王五", "favorite" : null }
{ "_id" : "1004", "name" : "赵六", "favorite" : [ "毛绒鹅" ] }
{ "_id" : "1005", "name" : "田七", "favorite" : null }

从上面聚合查询的结果来看:

(1)编号为1001的成员中数组合并后与预期的一致

(2)编号为1002的成员中数组合并后为null,原因是不存在toys字段

(3)编号为1003的成员中数组合并后为null,原因是fruits字段为null

(4)编号为1004的成员中数组合并后与预期的一致

(5)编号为1005的成员中数组合并后未null,原因是不存在fruits字段

合并多个数组时,如果其中有一个数组字段为null或者字段不存在,则合并的结果为null 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值