Mongodb $unwind 数组中的数组数组

标签 mongodb mongoose mongodb-query aggregation-framework

MongoDB 驱动程序:4.2.6, Mongoose :^5.9.6

我想展开关键字属性:

[
 {
    "_id": null,
    "totalNumberOfData": 4,
    "data": [
        {
            "numberOfData": 2,
            "sentiment": "Good",
            "keyword": [
                "A",
                "B",
                "C"
            ]
        }
    ]
  }
]

我尝试过这个,但没有成功。

{
    $unwind: {
      path: "$data.keyword",
      preserveNullAndEmptyArrays: true,
    },
  },

如何展开关键字数组?

最佳答案

一般来说,$unwind 阶段的输入应该是一个数组,因为您正在执行 data.keyword unwind,因此需要一个名为 data 的字段> 作为一个对象,其嵌套字段名为 keyword 作为数组,如:{data : keywords : []} & 它无法以这种方式找到它,从而导致空数组作为聚合的输出。由于 data 也是一个数组,因此您需要先展开它,因此您的情况需要双重展开:

db.collection.aggregate([
  {
    $unwind: {
      path: "$data",
      preserveNullAndEmptyArrays: true
    }
  },
  {
    $unwind: {
      path: "$data.keyword",
      preserveNullAndEmptyArrays: true
    }
  }
])

测试: mongoplayground

关于Mongodb $unwind 数组中的数组数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61649038/

相关文章:

mongodb - 在mongodb中使用按位运算进行查询

mongodb - 选择两个不同字段之间的范围包含给定数字的数据

Mongodb 分片集群 $in VS $or

javascript - 查询模型时返回未定义

node.js - 在 mongodb select 中使用偏移量和限制

regex - 整数值的 MongoDB 正则表达式搜索

集群上的 MongoDB 查询问题

Node.js Mongoose : Include excluded fields

node.js - Mongoose 迁移

meteor - 异步函数 : TypeError: callback is not a function 回调异常