node.js - 如何在数组中查找数组的大小?

标签 node.js mongodb mongodb-query aggregation-framework

我有一个像这样的数组:

{
"students": [
    [
        "5c8783f0927b1849b923a47b",
        "5c889c139af6b305e19cd17e",
        "5c89f1dc4dc6695c138cb2a4",
        "5cb0624945111f1c5fdf2527",
        "5caed95afd229a5c460e745b",
        "5cbeb926fac7143e261adaab"
    ],
    [
        "5c8783f0927b1849b923a47b",
        "5c889c139af6b305e19cd17e",
        "5c89f1dc4dc6695c138cb2a4"
    ],
    [
        "5c8783f0927b1849b923a47b",
        "5c89f1dc4dc6695c138cb2a4",
        "5cadc0452a00532a4c903c38"
    ],
    [
        "5c8783f0927b1849b923a47b"
    ]
          ]
}

我想找到学生数组中每个数组的大小。 像这样:

"count": [6, 3, 3, 1]

我尝试过 $map 和 $size

 aggregatePipe.push({
       $group: {
                    _id: { subjectId: "$subjectId" },
                    studentIds: { $push: "$students" },
                    count: { $push: { $map: { input: "$students", as: "student", in: { $size: "$student" } } } }
                }
            });

但是我得到了空值数组。

最佳答案

您可以使用以下聚合

db.collection.aggregate([
  { "$project": {
    "students": {
      "$map": {
        "input": "$students",
        "in": { "$size": "$$this" }
      }
    }
  }}
])

Output

[
  {
    "_id": ObjectId("5a934e000102030405000000"),
    "students": [ 6, 3, 3, 1 ]
  }
]

关于node.js - 如何在数组中查找数组的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56471940/

相关文章:

node.js - WebSocket 连接到 'ws://localhost:3434/' 失败 : Connection closed before receiving a handshake response

javascript - 如何在将图像上传到服务器时传递多个值(使用 AngularJS 和 NodeJS 进行文件上传)?

mongodb - 为什么 MongoDB 不同的查询计划显示不同的 nReturned 值?

javascript - 无法读取未定义的属性 'push'

mongodb - Mongo Query - 过滤嵌套数组并返回不包含特定字段的文档

javascript - mongodb中如何根据数组内容的差异进行排序?

npm安装node.js错误

arrays - 无法将 JSON 对象转换为全局数组

javascript - 验证node.js中的请求并在错误时退出

stored-procedures - MongoDB 存储过程等价物