如何使用MongoDB根据数组元素对记录进行分组

Nipuna Dilhara

我有一个数据收集,其中包含以下格式的一组记录。

{
    "_id" : 22,
    "title" : "3D User Interfaces with Java 3D",
    "isbn" : "1884777902",
    "pageCount" : 520,
    "publishedDate" : ISODate("2000-08-01T07:00:00Z"),
    "thumbnailUrl" : "https://s3.amazonaws.com/AKIAJC5RLADLUMVRPFDQ.book-thumb-images/barrilleaux.jpg",
    "longDescription" : "Description",
    "status" : "PUBLISH",
    "authors" : [
        "Jon Barrilleaux"
    ],
    "categories" : [
        "Java",
        "Computer Graphics"
    ]
},
{
    "_id" : 23,
    "title" : "Specification by Example",
    "isbn" : "1617290084",
    "pageCount" : 0,
    "publishedDate" : ISODate("2011-06-03T07:00:00Z"),
    "thumbnailUrl" : "https://s3.amazonaws.com/AKIAJC5RLADLUMVRPFDQ.book-thumb-images/adzic.jpg",
    "status" : "PUBLISH",
    "authors" : [
        "Gojko Adzic"
    ],
    "categories" : [
        "Software Engineering"
    ]
}

请注意,“类别”是一个数组。

我想统计每个类别的已出版书籍。我尝试了以下解决方案,但将整个阵列视为一组。

db.books.aggregate([
    {
        $group:{_id:"$categories", total:{$sum:1}}
    }
])

取而代之的是,我想计算“类别”数组中每个单独类别值的记录数。

谢拉克

您应该首先使用$ unwind为数组中的每个元素输出一个文档。

db.books.aggregate([
  { 
    $unwind : "$categories"
  },
  {
    $group : { _id : "$categories", total: { $sum: 1 } }
  }   
])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何根据mongodb中的日期对记录进行分组

根据使用JavaScript的相同元素对数组进行分组

根据值对数组元素进行分组

Mongodb 元素数组必须基于相同的元素进行分组

mongodb:每n个元素对数组元素进行分组

如何通过将数组元素与MongoDB中的MapReduce匹配来对文档进行分组?

如何根据对象数组对对象的json数组进行分组

如何根据数组中的元素进行过滤?

使用mongodb记录分组

如何使用JAXB对元素进行逻辑分组?

如何根据连续的行值对熊猫中的元素进行分组

如何根据流中的时间对元素进行分组?

MongoDB-聚合:如何根据查询进行分组

如何使用mongodb对数据进行分组?

Rails使用关联记录对数组结果进行分组

如何根据某些属性对javascript数组进行分组?

如何根据对象中的属性对对象数组进行分组

如何根据 id 对嵌套数组进行分组?

如何根据对象的值对对象数组进行分组排序?

在数组中,使用PHP根据键值对项目进行分组

如何使用Vue JavaScript对元素进行分组以在数组中添加数量

根据值对更多记录进行分组

基于数组元素 mongoDB 的分组

如何根据选择比较标准记录数组元素的数量

如何按其元素长度对PHP数组进行分组?

Linq-使用数组属性内的元素进行分组

使用 php 对数组中的元素进行分组

使用两个属性对数组元素进行分组

MongoDB - 如何按日期分组并计算数组中的元素