首页 > 解决方案 > 如何在聚合 Mongodb 中删除包装“[”和“]”?

问题描述

我是学习 MongoDB 的初学者,我在使用聚合从集合中获取结果时遇到问题,我真的希望有人能帮助我:

我的代码:

  {
    "$project": {
      "_id": 0,
      "product_id": "$_id", 
      "product_phone": "$product_phone",
      "product_tablet": "$product_tablet",
      "product_colors": "$product_colors",
      "options": [
        {
          title: "Mobile Phone",
          data: { 
            $ifNull: [ "$product_phone", null ] 
          }
        },
        {
          title: "Tablet",
          data: {
            $ifNull: [ "$product_tablet", null ]
          }
        },    
        {
            $map: {
              input: '$product_colors', 
              in: {
                  "title": "$$this.color",
                  "data": "$$this.photos"
              }                 
            }
        }  

      ] 
    }
  },   

结果是(截图1):

在此处输入图像描述

但我想得到这样的结果(截图2):

在此处输入图像描述

谁能帮我?

标签: mongodbaggregate

解决方案


$map返回一个数组,这就是您获得当前结构的原因。你可以做的是用 包裹它$concatArrays,像这样:

db.collection.aggregate([
  {
    "$project": {
       ...
      "options": {
        "$concatArrays": [
          [
            {
              title: "Mobile Phone",
              data: {
                $ifNull: [
                  "$product_phone",
                  null
                ]
              }
            },
            {
              title: "Tablet",
              data: {
                $ifNull: [
                  "$product_tablet",
                  null
                ]
              }
            }
          ],
          {
            $map: {
              input: "$product_colors",
              in: {
                "title": "$$this.color",
                "data": "$$this.photos"
              }
            }
          }
        ]
      }
    }
  }
])

蒙戈游乐场


推荐阅读