如何在 mongodb 中使用构面操作查找字段的不同值

2024-03-06

FilteredAccording 部分和categorizedBy 使用我在链接中提供的查询按预期工作,但我在 findDistinct 部分遇到问题。

在 mongodb 中我有以下数据:

 {
        "_id": 10001,
        "university": "SPYU",
        "Courses": [
          "English",
          "French"
        ],
        "dept": [
          "Literature"
        ],
        "type": [
          "Autonomous"
        ],
        "status": "ACTIVE",
        "isMarked": true
      },
      {
        "_id": 10002,
        "university": "SPYU",
        "Courses": [
          "English",
          "French"
        ],
        "dept": [
          "Literature"
        ],
        "type": [
          "Autonomous"
        ],
        "status": "NON-ACTIVE",
        "isMarked": true
      }

我希望得到的回应是:

 "university": [
  {
    "name": "Literature",
    "values": [
      {
        "_id": 10001,
        "university": "SPYU",
        "Courses": [
          "English",
          "French"
        ],
        "dept": [
          "Literature"
        ],
        "type": [
          "Autonomous"
        ],
        "status": "ACTIVE",
        "isMarked": true
      },
      {
        "_id": 10002,
        "university": "SPYU",
        "Courses": [
          "English",
          "French"
        ],
        "dept": [
          "Literature"
        ],
        "type": [
          "Autonomous"
        ],
        "status": "NON-ACTIVE",
        "isMarked": true
      }
    ]
  }
],
 "findDistinct": [
    {​​​​​​​​
      "name": "Courses",
      "values": [
        "English",
         "French"
      ]
    }​​​​​​​​,
    {​​​​​​​​
      "name": "Status",
      "values": [
        "ACTIVE",
        "NON-ACTIVE"
      ]
    }​​​​​​​​
  ]

我使用此链接进行了尝试,但响应并未按预期进行。https://mongoplayground.net/p/XECZvRMmt3T https://mongoplayground.net/p/XECZvRMmt3T

现在,回应是这样的

 "universities": [
  {
    "name": "Literature",
    "values": [
      {
        "_id": 10001,
        "university": "SPYU",
        "Courses": [
          "English",
          "French"
        ],
        "dept": [
          "Literature"
        ],
        "type": [
          "Autonomous"
        ],
        "status": "ACTIVE",
        "isMarked": true
      },
      {
        "_id": 10002,
        "university": "SPYU",
        "Courses": [
          "English",
          "French"
        ],
        "dept": [
          "Literature"
        ],
        "type": [
          "Autonomous"
        ],
        "status": "NON-ACTIVE",
        "isMarked": true
      }
    ]
  }
],
"findDistinct": [
    {​​​​​​​​
      "Courses": [
        "English",
         "French"
      ]
    }​​​​​​​​,
    {​​​​​​​​
      "status": [
        "ACTIVE",
        "NON-ACTIVE"
      ]
    }​​​​​​​​
  ]

任何帮助将不胜感激!!


快速修复您的查询,

大学:

  • $addFields,删除 $project 并仅添加一项操作isMarked
  • $unwind解构dept array
  • $group by dept并获取根的值数组

查找不同:

  • $group通过 null 并获得唯一courses数组和status
  • $reduce迭代循环Courses嵌套数组并使用获取唯一数组$setUnion
  • 当然要制作数组status in dest field
  • $unwind解构dest array
  • $replaceRoot代替dest对象到根
db.collection.aggregate([
  { $match: { university: "SPYU" }
  },
  {
    $facet: {
      universities: [
        { $addFields: { isMarked: { $in: ["French", "$Courses"] } } },
        { $unwind: "$dept" },
        {
          $group: {
            _id: "$dept",
            values: { $push: "$$ROOT" }
          }
        }
      ],
      findDistinct: [
        {
          $group: {
            _id: null,
            Courses: { $addToSet: "$Courses" },
            Status: { $addToSet: "$status" }
          }
        },
        {
          $project: {
            _id: 0,
            dist: [
              {
                name: "Courses",
                values: {
                  $reduce: {
                    input: "$Courses",
                    initialValue: [],
                    in: { $setUnion: ["$$this", "$$value"] }
                  }
                }
              },
              {
                name: "Status",
                values: "$Status"
              }
            ]
          }
        },
        { $unwind: "$dist" },
        { $replaceRoot: { newRoot: "$dist" } }
      ]
    }
  }
])

操场 https://mongoplayground.net/p/THKYS7kTKwW

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 mongodb 中使用构面操作查找字段的不同值 的相关文章

  • Mongodb 聚合使用 $group 两次

    我在 mongo 中有一堆文档 其结构如下 id number 2 colour id name Green hex 00ff00 position id name Defence type position ageGroup id nam
  • 查找聚合中的管道在 mongodb 中不起作用

    我是 mongodb 的新手 所以我希望这不会成为一个非常基本的问题 我做了一些研究 并试图应用我所发现的东西 但有些东西似乎让我忽略了 我有两个以下格式的集合 Shop shopId 1002 shopPosId 10002 descri
  • 在 AWS EKS 集群中安装 mongodb 时出错 - “运行 PreBind 插件 VolumeBinding:绑定卷:超时 > 等待条件”

    我尝试按照给定的链接在 EKS 集群中安装 mongodb 使用 mongodb kubernetes operator https github com mongodb mongodb kubernetes operator https
  • 使用 MongoDB 和 ASP.NET MVC 进行分页的有效方法

    我们正在创建一个应用程序 MongoDB 作为数据库 我们正在使用MongoDB 的官方 C 驱动程序 http docs mongodb org ecosystem drivers csharp 我们有一个包含数千条记录的集合 我们想要创
  • Mongodb聚合,如何按间隔标准对文档进行计数?

    我的 MongoDB 文档如下所示 StatCode LoadTime 例如 数据可能如下所示 id StatCode LoadTime 1 200 0 345 2 200 0 234 3 200 0 396 4 200 1 234 5 2
  • MongoDB - 编辑器变量 - MongoDB shell - Windows 7

    EDITOR 变量功能真的可以在 Windows 7 上使用吗 我正在读一篇文章 说一旦我们设置了 EDITOR 变量在 mongorc js 中 我们只需在 shell 中输入 编辑变量名 and var name将被加载到编辑器中 在我
  • 如何决定使用哪种NoSQL技术? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 MongoDB 基于文档 HBase 基于列 和 Neo4j 对象图 的优缺点是什么 我特别有兴趣了解
  • Mongodb upsert 嵌入文档

    我每天每米有一份文件 如果它不存在 如何在数据数组中添加另一个子文档并创建整个文档 key 20120418 123456789 data Meter 123456789 Dt ISODate 2011 12 29T16 00 00 0Z
  • 聚合和展开数组,但保留顶级键

    假设我的收藏中有以下文档Classes收藏家 id ObjectId 5df58d45244a850d54b922c8 mentors numOfMentors NumberInt 1 mentorList ObjectId 5c9ba63
  • 检索 mongoDB 文档中的空数组或 null

    我有我学校所有学生的收藏 每个文档都有一个sports列出每个学生从事的运动的数组属性 但该属性可能显示为sports or sports null或者根本不出现 如何检索属于上述三种情况之一的所有文件 如何向只有一项运动但未表示为数组的学
  • Laravel Mongo 多对多关系在哪里不起作用

    我有两个以多对多关系相互关联的 mongo 文档 一个称为律师 另一个称为律师 我的律师模型有 public function cases return this gt belongsToMany App LawCase 我的 LawCas
  • Mongoose 模型 update() 与 save()

    有一个关于问题update vs save https stackoverflow com questions 39010045 mongoose update vs save 但它针对的是一些不同的东西 我猜 纯粹相关mongoose S
  • 如何在没有objectid字段的mongodb集合上查找上次更新/插入/删除操作时间

    我在 MongoDb 数据库中有一些未使用的集合 我必须找出对数据库中的集合执行 CRUD 操作的时间 我们有自己的 id字段 而不是mongo默认的object id 我们没有任何时间在集合中归档以找出修改时间 有没有办法从元数据中找出m
  • 如何使用 Stripe 在一次操作中创建客户和卡片?

    我正在尝试第一次初始化客户 我有一个表格 他们可以在那里注册和填写所有内容 然后他们提交 在客户端上 会发生以下情况 var cardValues AutoForm getFormValues credit card form insert
  • Mongodb更新很多

    我正在使用express js 和 npm 模块 mongodb 进行开发 并以 mongodb 作为数据库 我有两个集合 即 用户 和 活动 一个用户可能有数千个活动 首先 我将用户的 id 姓名和图片 url 存储到 关系的活动文件 请
  • MongoDB自增ID

    MongodB 中自动生成的 ID 的大小为12 Bytes大整数的大小是8 bytes 我在 4 台运行 Ubuntu Server 的机器上有一个 mongodb 集群 但我现在只是在测试 插入只能通过一台服务器 即 Nodejs 服务
  • Mongodb 聚合数组中的子文档

    我正在使用 mongodb 作为后端实现一个小型应用程序 在此应用程序中 我有一个数据结构 其中文档将包含一个包含子文档数组的字段 我使用以下用例作为基础 http docs mongodb org manual use cases inv
  • Mongodump之后,调用MongoRestore挂起

    我们正在尝试在相对较小的数据库上做一个简单的 MongoDump 我们的步骤很简单 export 从目标机器上删除现有数据库 在目标机器上导入 MongoDump 完美执行 mongodump out root mongo prod DB
  • 使用 Tweepy 获取推文时出错

    我有一个用于获取推文的 Python 脚本 在脚本中我使用该库 Tweepy 我使用有效的身份验证参数 运行此脚本后 一些推文存储在我的 MongoDB 中 有些则被 if 语句拒绝 但我仍然收到错误 requests packages u
  • 在 MongoDB 聚合的“addField”操作中使用“$count”

    我正在尝试找到聚合运算符的正确组合 以将标题为 totalCount 的字段添加到我的 mongoDB 视图中 这将为我提供聚合管道特定阶段的计数 并将其输出为每个文档的计数结果 count count 但最终我得到了一个具有此结果的文档

随机推荐

  • 如何在 WPF 菜单项中禁用助记符?

    我有动态字符串显示为 MenuItem 的标题 其中有时包含 WPF 将下划线视为助记符 但我不希望这样 我如何禁用它 尝试了线程中的所有解决方案后WPF 列表框 跳过字符串中的下划线符号 https stackoverflow com q
  • 一旦禁用了 ios 中的空闲计时器(以允许显示器再次休眠),如何重新启用它?

    我已经找到了如何阻止 iOS 设备进入睡眠状态 见下文 但我在撤消该设置时遇到了麻烦 根据苹果文档 https developer apple com documentation uikit uiapplication 1623070 id
  • 在 emacs python-mode 中不正确地退出缩进

    我正在使用 Emacs python 模式 我在我的中使用它来调用它 emacs add to list load path emacs python mode el 6 0 3 autoload python mode python mo
  • 为什么在测试 ui.sender 时,jquery sortable 中的更新事件似乎运行了两次

    我正在使用 jQuery UI sortable 对连接列表进行排序 更新事件似乎运行了两次 这是完整的可排序调用 pageContent sortable handle quesText connectWith pageContent c
  • JavaScript 性能评估 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Jquery如何通过数组中的属性查找对象

    鉴于我有一系列 目的 对象 array of purpose objects var purposeObjects purpose daily purpose weekly purpose monthly 为了简单起见 我省略了其他属性 现
  • 如何使用 classList 获取 React 组件引用来更改其类?

    我已经创建了一个反应组件使用以下代码 在此我创建选项卡并添加类并将其引用存储在全局命名空间接口中以供进一步处理 var TabBody React createClass getInitialState function return cl
  • Metro 应用程序中的异步调用链接

    我对 Metro 开发很陌生 我只希望能够以一种可以理解的方式表达我的问题 实际上我正在将旧应用程序的一部分移植到 Metro 逻辑部分是一个单独的项目 便携式库 它应该服务于 1 旧的 WPF 应用程序和 2 新的 Metro 应用程序
  • Socket.IO确认发货

    在我深入研究代码之前 有人可以告诉我 Socket IO 中是否有任何可用于确认交付的文档吗 以下是我迄今为止收集到的信息 可以提供回调 以便在消息被确认时调用 有一种特殊模式 不稳定 不保证交付 有一个默认模式不是 易失性 的 这给我留下
  • JAVAFX 2.0 如何将滑块中的滑块图标更改为图像?

    我想将图标更改为我的图像 我浏览了 CSS 参考指南 但似乎找不到任何相关内容 有可能吗 无论是使用 CSS 还是通过主 JavaFX 脚本进行声明 都没有关系 看一下示例代码和图像 了解如何在此处呈现自定义滑块音频播放器 http fxe
  • jQuery:使用 carouFredSel 插件进行延迟加载

    我正在尝试对使用以下命令创建的轮播内的图像实现延迟加载卡鲁 弗莱德 塞尔 http caroufredsel dev7studios comjQuery 插件 您有什么建议或者您已经取得了类似的成就吗 默认情况下好像做不到 Stefano
  • Identity 2.0 无效登录尝试

    由于某种原因 我尚未发现 但在成功注册和激活后 我无法使用电子邮件地址登录 而是收到错误 无效登录尝试 由于 ASP NET Identity 2 0 通过使用电子邮件登录进行了改进 因此我修改了注册表单以实际存储真实的用户名 因为现有的注
  • 让 DLL 使用函数指针调用 exe 函数

    谁能告诉我我做错了什么 我正在尝试在不同的线程上运行自定义主程序 这是代码 exe主程序 include dll class h include
  • 为多个类生成单个 WSDL 文件

    我们使用 自下而上 的方法来构建网络服务 我们有 10 个 Java 类 希望将其公开为 Web 服务 我们怎样才能为这些类只创建一个 WSDL 文件呢 java2wsdl实用程序及其 Ant 任务仅使用一个类作为生成 WSDL 文件的参数
  • 为什么 RelayCommands 通常使用延迟初始化?

    当使用约什 史密斯的中继命令 http msdn microsoft com en us magazine dd419663 aspx id0090051 我见过的大多数示例都使用延迟初始化 例如 public class ViewMode
  • defaultdict 的嵌套 defaultdict

    有没有办法使 defaultdict 也成为 defaultdict 的默认值 即无限级递归defaultdict 我希望能够做到 x defaultdict stuff x 0 1 0 所以 我可以做x defaultdict defau
  • Shadow DOM 是否像 React.js 中的 Virtual DOM 一样快?

    在我的项目中实现 Shadow DOM 是否会让它们像 React 使用的虚拟 DOM 一样更快 它们是用于不同目的的不同事物 因此比较性能没有意义 虚拟DOM 虚拟 DOM 旨在避免对 DOM 进行不必要的更改 这种更改在性能方面代价高昂
  • 如何在Python中解决递归关系

    我正在尝试编写代码来给出递归关系的数值答案 该关系本身很简单 定义如下 变量 x 是一个整数 p i p i 2 2 p i 1 2 如果 i gt 0 且 i p 0 p 2 2 如果 i gt x 则 p i 1 这也在这段代码中 fr
  • 如何使用 NUnit 模拟属性?

    如何使用 NUnit 模拟属性 NOTE 我发现这个外围的嘲笑答案 https stackoverflow com questions 591174 how to mock the property which returns the li
  • 如何在 mongodb 中使用构面操作查找字段的不同值

    FilteredAccording 部分和categorizedBy 使用我在链接中提供的查询按预期工作 但我在 findDistinct 部分遇到问题 在 mongodb 中我有以下数据 id 10001 university SPYU