首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongodb查询,用于计算所有文档的不同值

Mongodb查询,用于计算所有文档的不同值
EN

Stack Overflow用户
提问于 2020-04-18 18:47:56
回答 1查看 31关注 0票数 2

示例文档:

代码语言:javascript
复制
{"id": "1",  "movie_data": "enemies": ["a", "b", "v-glaive", "t-midnight", "t-obsidian", "u-klaue"], "groups": ["avengers"], "movies": []}
{"id": "2",  "movie_data": "enemies": ["a", "d"], "groups": ["avengers"], "movies": []}
{"id": "3",  "movie_data": "enemies": ["a", "b", "c", "d"], "groups": ["avengers"], "movies": []}

在这里,我需要集团-复仇者和敌人计数作为不同的价值敌人的所有集合。

代码语言:javascript
复制
Avenger - enemy count - 9
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-18 20:07:06

您可以使用MongoDB的聚合管道完成它:

代码语言:javascript
复制
db.collection.aggregate([
   /** unwind creates multiple docs for each value in array */
  {
    $unwind: "$movie_data.groups"
  },
  /** Pick docs where we've groups as 'avengers' */
  {
    $match: {
      "movie_data.groups": "avengers"
    }
  },
  {
    $unwind: "$movie_data.enemies"
  },
  {
    $group: {
      _id: "$movie_data.groups",
      uniqueEmemies: {
        $addToSet: "$movie_data.enemies" /** Adds unique value to array */
      }
    }
  },
  {
    $project: {
      _id : 0,
      group: "$_id",
      uniqueEnemyCount: {
        $size: "$uniqueEmemies"
      }
    }
  }
])

测试: 蒙古操场

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61294443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档