我有以下MongoDB查询:

const vaccination = await Schedule.aggregate([
        { $match: { status: ScheduleStatus.Published } },
        { "$unwind": { "path": "$vaccines", "preserveNullAndEmptyArrays": true } },

        {
            "$group": {
                "_id": "$vaccines.vaccine",
                "count": { "$sum": "$vaccines.stok" },

            }
        },
        {
            $lookup: { from: 'vaccines', localField: '_id', foreignField: '_id', as: 'vaccine' },
        },
        {
            $project: {

                "count": 1,
                "vaccine": { "$arrayElemAt": ["$vaccine.name", 0] }


            }
        }

    ]);

并返回以下结果:

[
    {
        "_id": "61efd8a812432135c08a748d",
        "count": 20,
        "vaccine": "Sinovac"
    }
]

有没有办法让输出成为一个值数组,比如:

[["Sinovac",20]]

谢谢,对不起,我英语不好

推荐答案

因此,您无法获得所需的确切 struct ,根据定义,聚合框架返回一个"文档"数组,文档的形式为{key: value},但您可以返回以下 struct :

[
  {
    "values": [
      "61efd8a812432135c08a748d",
      20,
      "Sinovac"
    ]
  }
]

通过这条管道:

db.collection.aggregate([
  {
    $project: {
      _id: 0,
      values: {
        $map: {
          input: {
            "$objectToArray": "$$ROOT"
          },
          as: "item",
          in: "$$item.v"
        }
      }
    }
  }
])

Mongo Playground

Mongodb相关问答推荐

MongoDB更新对象数组

如何在MongoDB中正确解析佛年?

MongoDB中的字符串聚合

数组过滤器 MongoDB

pymongo - ifnull 重新调整整个对象而不是特定字段

随着时间的推移在 mongodb 中获得

Mongodb聚合查找连接两个对象字段的集合数组匹配对象索引字段的总和

如何使用 Golang 库获取 MongoDB 版本?

如何使用 mongoose 从 MongoDb 获取数据?

.insertOne 不是函数

MongoDB 聚合 $divide 计算字段

如何使用 mongoexport 导出排序数据?

MongoDB:自动生成的 ID 为零

MongoDB 3 Java判断集合是否存在

如何在 MongoDB 聚合查询中使用 $hint?

MongoDB 数据库,相当于 SELECT column1, column2 FROM tbl

Java Mongodb 正则表达式查询

MongoDB 用 $type 匹配一个数组?

我可以只获取 Cursor 对象(pymongo)中的第一项吗?

MongoError:failed to connect to server [localhost:27017] on first connect