如何比较 MongoDB 中的两个对象(忽略键的顺序)?

2024-03-30

查找 objA 与 objB 相同的所有文档的最佳方法是什么(键的顺序并不重要)?

灵感来自另一个问题 https://stackoverflow.com/questions/74962485/how-to-use-lookup-on-two-collection-having-object-property-of-variable-size/74962608?noredirect=1#comment132285540_74962608作者:@Digvijay,我正在寻找一种方法来比较 MongoDB 查询上的两个对象,但找不到相关的解决方案。

样本数据:

[
  {
    objA: {a: 1, b: 2},
    objB: {a: 1, b: 2}
  },
  {
    objA: {m: "g", c: 5},
    objB: {c: 5, m: "g"}
  },
  {
    objA: {m: "g", c: 7},
    objB: {c: 5, m: "g"}
  },
  {
    objA: {m: "g", c: 7},
    objB: {b: "g", c: 7}
  }
]

预期成绩:

[
  {
    objA: {a: 1, b: 2},
    objB: {a: 1, b: 2}
  },
  {
    objA: {m: "g", c: 5},
    objB: {c: 5, m: "g"}
  },
]

你可以这样做:

  • $objectToArray- 转变objA and objB到数组。
  • $setEquals- 比较上面的数组是否具有相同的不同元素。
db.collection.aggregate([
  {
    $match: {
      $expr: {
        $setEquals: [
          { $objectToArray: "$objA" },
          { $objectToArray: "$objB" }
        ]
      }
    }
  }
])

工作示例 https://mongoplayground.net/p/bEVuTEI6E0O

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

如何比较 MongoDB 中的两个对象(忽略键的顺序)? 的相关文章

随机推荐

  • 在运行时跟踪 java 应用程序

    我想在运行时跟踪 java 应用程序以记录并稍后分析其每个行为 是否有可能挂钩 java 应用程序来获取运行时信息 例如方法调用 带有参数和返回值 和对象的状态 即其属性及其值 我的目标是完全了解应用程序的行为以及它如何处理数据 如果您需要
  • 如何通过单击另一个用户控件的按钮在面板中添加用户控件?

    我有一个 panel1 2 个用户控件 uc1 和 uc2 uc1 已添加到面板中 uc1 有一个按钮UC1 当我单击该按钮时 我想隐藏 uc1 并显示有另一个按钮 UC2 的 uc2 通过单击按钮UC2 我想在面板中隐藏uc2并显示uc1
  • QueryDsl SQL - 左连接子查询

    我在用QueryDsl SQL我想要left join子查询 这是简单的查询SQL SELECT usr memberId payoutsBbf totalPyts FROM users usr LEFT JOIN SELECT pyt m
  • erlang中如何将中缀转换为后缀?

    我刚刚遇到这个帖子 https stackoverflow com questions 4621151 the shortest way to convert infix expressions to postfix rpn in c 相当
  • SQL Server - 实现序列

    我有一个系统 要求我在数据进入数据库之前拥有数据的 ID 我正在使用 GUID 但发现它们太大而无法证明其便利性 我现在正在尝试实现一个序列生成器 它基本上为给定的上下文保留一系列唯一的 ID 值 代码如下 ALTER PROCEDURE
  • Android 13 中的存储权限 - Flutter

    我正在使用读写权限来访问外部存储并获取权限 我正在使用权限处理程序包 AndroidManifest xml
  • 按因子拆分并组合成新列

    我有一个 sql 输出到 data frame 中 如下所示 dateTime resultMean SensorDescription 1 2009 01 09 21 35 00 7 134589 Aanderaa Optode Type
  • WooCommerce 自定义报告:获取具有已完成状态的订单

    我正在为 woocommerce 制作自定义报告我正在尝试为所有已交付订单添加报告 这就是我正在做的事情 orders wc get orders array numberposts gt 1 foreach orders as order
  • 是否可以在信号处理程序中设置承诺?

    我正在寻找一种方法来停止每 2 秒执行一次任务的线程 我决定尝试使用 std promise future 以便线程可以在设置 Promise 时立即退出 include
  • 当我制作结构的浅表副本时,灵活的数组成员不会被复制

    我通过以下方式对结构进行了浅复制 struct Student char name int age Courses list First course node Student friends Flexible array member s
  • Firebase Auth 有没有办法确保所有用户之间的 displayName 是唯一的?

    我创建了一个函数来使用以下代码创建新用户 该代码创建用户并更改其显示名称 export function handleSignup email password name firebase auth createUserWithEmailA
  • 如何在 Java 中创建哈希表?

    在 Java 中创建哈希表 或关联数组 最直接的方法是什么 我的 google fu 已经出现了几个例子 但是有一个标准的方法来做到这一点吗 有没有一种方法可以用键 gt 值对列表填充表 而无需为每对对象单独调用 add 方法 Map ma
  • 在 100% div 内获取水平滚动条

    我正在尝试构建一个快速概述来显示即将到来的日历周 我希望它水平排列 这样如果我们显示完整的日历周 它可能会变得相当宽 我现在已经将其设置为具有固定宽度的内部 div 以便浮动的 日 div 不会返回到下方 和设置为 width 100 的外
  • 为什么 Sublime 包控制不起作用?

    我已经安装了崇高文本2 和以下本指南 https packagecontrol io installation st2 我安装了包控制 一旦我使用了Ctrl Shift PSublime 中的快捷方式 当我输入时install 没有安装选项
  • Cmake gui 重置参数。如何在cmake gui中设置参数?

    我正在尝试在 vtk 构建后构建 cmake 我看到WITH VTK被选中 所以我尝试就地更改VTK PATH 不幸的是我收到这条消息 未找到 VTK 请将 CMake 中的 DVTK DIR 设置为 VTK 构建目录 或 VTK 在日志窗
  • Peewee - 无法连接到主机上的 MySQL 服务器

    我正在使用 peewee ORM 开发一个基于 Flask 的 python 应用程序 我最初连接到本地存储在我的计算机上的数据库 现在尝试过渡到远程连接到数据库 我已经通过服务器的 cpanel 部分在 phpmyadmin 中设置了数据
  • 猫鼬方法和静态有什么用?

    猫鼬方法和静态有什么用 它们与普通函数有何不同 谁能用例子解释一下区别 数据库逻辑应该封装在数据模型中 Mongoose 提供了两种方法来做到这一点 方法和静态 Methods向文档添加实例方法 而Statics向模型本身添加静态 类 方法
  • 如何在 NSUserDefaults 中设置 NSArray?

    我想知道为什么有 arrayForKey 方法 但没有 setArrayForKey 方法 我该如何设置该数组 只需使用setObject forKey 我想原因是有一个特殊的arrayForKey and dictionaryForKey
  • Oracle - 将多个计数作为一个查询返回

    我有几个疑问 详情如下 我希望能够运行一个返回两个计数的 SQL 查询 这可能吗 1 select nvl count rowid 0 from tablename where OPP FOO and date BAZ 2 select n
  • 如何比较 MongoDB 中的两个对象(忽略键的顺序)?

    查找 objA 与 objB 相同的所有文档的最佳方法是什么 键的顺序并不重要 灵感来自另一个问题 https stackoverflow com questions 74962485 how to use lookup on two co