在单个查询中从 mongodb 中的 2 个集合中获取数据

2023-12-27

我想从 2 个独立的集合中获取数据并根据date通过单个查询。这甚至可能在mongodb?我有收藏:

订单类型1

{
    "id": "1",
    "name": "Hello1",
    "date": "2016-09-23T15:07:38.000Z"
},
{
    "id": "2",
    "name": "Hello1",
    "date": "2015-09-23T15:07:38.000Z"
}

订单类型2

    {
        "id": "3",
        "name": "Hello3",
        "date": "2012-09-23T15:07:38.000Z"
    },
    {
        "id": "4",
        "name": "Hello4",
        "date": "2018-09-23T15:07:38.000Z"
    }

预期结果

[
    {
        "id": "3",
        "name": "Hello3",
        "date": "2012-09-23T15:07:38.000Z"
    },
    {
        "id": "2",
        "name": "Hello1",
        "date": "2015-09-23T15:07:38.000Z"
    },
    {
        "id": "1",
        "name": "Hello1",
        "date": "2016-09-23T15:07:38.000Z"
    },

    {
        "id": "4",
        "name": "Hello4",
        "date": "2018-09-23T15:07:38.000Z"
    }
]

现在,我想获取两种类型的orders在按日期排序的单个查询中。


您可以尝试使用 mongodb 进行以下聚合3.6及以上,但我认为您应该使用两个查询,因为对于大数据集$lookup https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/#lookup-multiple-joins管道将破裂BSON限制 https://docs.mongodb.com/manual/reference/limits/ of 16mb。但这也取决于你的$match条件或$limit。如果它们被应用到$lookup https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/#lookup-multiple-joins那么你的聚合就会完美地工作。

db.OrderType1.aggregate([
  { "$limit": 1 },
  { "$facet": {
    "collection1": [
      { "$limit": 1 },
      { "$lookup": {
        "from": "OrderType1",
        "pipeline": [{ "$match": { } }],
        "as": "collection1"
      }}
    ],
    "collection2": [
      { "$limit": 1 },
      { "$lookup": {
        "from": "OrderType2",
        "pipeline": [{ "$match": { } }],
        "as": "collection2"
      }}
    ]
  }},
  { "$project": {
    "data": {
      "$concatArrays": [
        { "$arrayElemAt": ["$collection1.collection1", 0] },
        { "$arrayElemAt": ["$collection2.collection2", 0] },
      ]
    }
  }},
  { "$unwind": "$data" },
  { "$replaceRoot": { "newRoot": "$data" } }
])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在单个查询中从 mongodb 中的 2 个集合中获取数据 的相关文章

  • 将 ObjectId 字段正确映射到字符串

    我正在对 RDBMS 世界进行一些探索 进入 MongoDB 的神秘海洋 我正在使用 Spring Data 来帮助我进行冒险 我需要在两个集合中的文档之间创建手动引用 我读到 DBRef 很昂贵 我的 pojo 是这样的 public c
  • 使用 Mongoose 将数组(“标签”)保存到 MongoDB

    我正在玩 Mongoose 但在保存到数组时遇到问题 例如 我在页面上有一个以逗号分隔的输入字段tags 我从 req body tags 中获取这些内容 删除空格 然后用逗号分隔它们以获得标签数组 现在 如何将该数组保存回我的数据库 我猜
  • Express MongoDB find() 基于 _id 字段

    因此 在我的 Express 应用程序中 我尝试根据我的 id 字段查找 请参阅下面我的 MongoDB 记录 id oid 58c2a5bdf36d281631b3714a title EntertheBadJah subTitle Lo
  • NoSQL(MongoDB)与 Lucene(或 Solr)作为数据库[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 随着基于文档数据库的 NoSQL 运动的发展 我最近关注了 MongoDB 我注意到如何将项目视为 文档 就像 Lucene 以及 Solr 用
  • Mongodb聚合管道大小和速度问题

    我正在尝试使用 mongodb 聚合查询来连接 lookup 两个集合 然后对连接数组中的所有唯一值进行不同计数 注意 我不一定知道metaDataMap 数组中有哪些字段 键 我不想计算或包含地图中可能存在或不存在的字段 这就是聚合查询看
  • MongoDB 更新。尝试从一个字段的属性设置另一个字段

    我想做的事情非常简单 但我不知道如何为一个字段赋予另一个字段的值 我只想用另一个字段的字符数更新一个字段 db collection update exists true set field1 field2 length 我试过给它点符号
  • 使用 or 运算符进行 Morphia 查询

    我想知道如何使用 or 运算符编写 Morphia mongodb 查询我这样写了 mongodb 查询 效果很好 db Inv find or sug id 2 grp id 2 但是当我尝试在吗啡中编写此内容时 我感到很困惑 以下查询是
  • 有一种方法可以在 MongoDB 中强制引用完整性 [重复]

    这个问题在这里已经有答案了 当您搜索与 Mongo DB 相关的引用完整性时 标准响应是 MongoDB 不支持此 标准解释是 MongoDB 支持 refs 和 populate 但是没有什么可以阻止您将 ref 更改为无效值 对于许多具
  • MongoDB - 从每个对话中获取最后一条消息?

    我有一个对话集合 id from userA to userB message Hello datetime 我想显示用户对话的预览 当前用户与任何其他用户之间每次对话的最后一条消息 因此 当用户单击某些 最后一条消息 时 他会转到下一页
  • Mongoose:转换为 ObjectId 失败

    我正在尝试在 MongoDB 中创建一个类别层次结构 以便通过 Mongoose 与 Node js 一起使用 我正在使用祖先数组方法 http docs mongodb org manual tutorial model tree str
  • 按日/月分组,并取 mongo 中当天/月评分的平均值

    我在 mongodb 中有这些数据 rating 4 ceatedAt ISODate 2016 08 08T15 32 41 262 0000 rating 3 createdAt ISODate 2016 08 08T15 32 41
  • 在 mongodb 中更新异步重复数据的最佳实践

    我正在权衡 Web 应用程序从关系 SQL 数据库迁移到 mongodb 的利弊 这是为了解决性能问题 将所有对象依赖项存储在对象本身中允许快速 读 用于向用户显示数据 另一方面 某些数据存在于不同的集合中 例如用户名位于用户集合中 但也在
  • 在 config.js 中打开 admin 以查看服务器统计信息

    拉动后运行此命令 docker run d p 27017 27017 e MONGO INITDB ROOT USERNAME admin e MONGO INITDB ROOT PASSWORD password name mongod
  • 创建永远不匹配的 mongo 表达式的最佳方法

    我正在寻找的内容在某种程度上相当于在 SQL 中执行的操作 WHERE 1 0 我正在寻找这样的东西 因为我正在构建一个类型安全的 DSL 来在我的域上执行查询 支持连接和析取 有时 添加一个从不匹配任何内容的查询可能比在代码中处理它更容易
  • MongoDB 将数字转换为科学计数法的字符串

    我想获得完整的号码String 但反而 1490650000000 它返回科学计数法 1 49065e 12 这是我尝试转换它的方法 substr myNumber 0 1 有什么想法如何预防吗 Note 我使用的是v3 6 无法升级使用
  • Mongo $group 和 $project

    我正在尝试获取关键字计数parentId categioryId and llcId 我的数据库是 id ObjectId 5673f5b1e4b0822f6f0a5b89 keyword electronic content manage
  • Mongoose 4.4.12 中 Schema 方法范围内的“this”为空 {}

    当在 Schema 方法内记录到控制台时 对象 this 为 这发生在一天前 我一直在阅读教程和其他堆栈溢出问题 但不幸的是我没有找到原因的解决方案 这是我的模型 var mongoose require mongoose var Sche
  • 如何修复 MongoClient is not a constructor 错误

    我刚刚学习 JavaScript 和 Nodejs 根据我在网上找到的一些代码 我编写了以下应用程序 当我尝试运行它时 我在第 9 行收到错误 其中显示 new MongoClient 错误提示 MongoClient 不是构造函数 您能解
  • Flask 不加载配置

    我在 Flask 中加载配置时遇到问题 from config import config DevelopmentConfig TestingConfig ProductionConfig def create app config nam
  • 阻止 Mongoose 为子文档数组项创建 _id 属性

    如果您有子文档数组 Mongoose 会自动为每个子文档创建 id 例子 id mainId subDocArray id unwantedId field value id unwantedId field value 有没有办法告诉 M

随机推荐

  • 获取模块的所有功能

    一个项目具有以下结构 modulename init py one function 1 py function2 py init py two another function py yet another function py ini
  • 使用垂直分割打开新的 Emacs 缓冲区

    如何在 Emacs 中将垂直分割设置为默认而不是水平分割 My use case I want to compare a Python file with an older revision of itself from the svn r
  • 在 docker buildkit 中使用秘密标志的正确方法

    我正在努力解决加文提到的同样问题这个问题 https stackoverflow com questions 56865849 setting docker env var from build secret 特别是在新docker构建秘密
  • 尝试获取准确的信息(CTE - 递归)

    我有不同的桌子和goal是获取每个客户的批准工作流程 以这种方式显示该信息 gt 客户 批准者1 批准者2 批准者3 批准者4 首先 我有一个名为实体的表 12 Math Andrew 308 CHAIN1 MathAndrew 13 Jo
  • 为什么应该避免在 servlet 中使用 InheritableThreadLocal?

    我在用InheritableThreadLocal in my Servlet班级 这样它就可以从它的子线程中使用 这是邪恶的使用吗InheritableThreadLocal在线程池执行器中 比如servlet线程池 我的问题 1 为什么
  • Three.js - 蒙皮骨架网格物体实例、动画和混合

    我正在开发一款小型多人游戏 该游戏有一个单一皮肤的玩家网格 有许多玩家使用它 一些背景 我尝试通过 Maya 和 Blender Collada 导出加载 两者似乎都引用了某种形式的动画数据 但我无法让它工作 我尝试过 Maya JSON
  • Flutter - 仅在首次加载时无法加载资源

    我在我的 flutter 应用程序上加载图像 如下所示 Image asset imageFilePath fit BoxFit cover 当我第一次在模拟器上运行应用程序时 出现以下异常 I flutter 7194 图像资源服务捕获异
  • 使用 WSE 3.0 添加 SOAP:HEADER 用户名和密码

    我已经成功创建了一个 WS 客户端 该客户端在不使用身份验证时可以正常工作 但是 服务器 WebSphere 现在需要添加 ws security 用户名令牌 而我很难做到这一点 生成的 SOAP 消息应该如下所示
  • 如何将软件版本从 Azure DevOps 部署到内部服务器?

    我们的软件托管在 Azure DevOps 上的 Git 中 并使用构建管道 主要使用 Cake 脚本 进行构建 我们现在希望使用 Azure DevOps 发布管道来部署该软件 然而 我们所有的应用程序服务器都位于防火墙后面 网络内部 除
  • ASP.NET WebPart 和 Google Chrome

    Hi there 这几天开始学习ASP NET Google Chrome 是我的默认浏览器 我也在 Google Chrome 中测试我的应用程序 我发现当我使用 Chrome 时 ASP NET 的某些元素不会实时运行 例如 ASP N
  • 检查对象是否为 Null 或未定义

    我有一个包含可选变量参数的函数 默认情况下 我将变量设置为NULL 但如果不是NULL我希望我的功能可以做一些事情 我需要一种方法来检查变量是否不为空 这很复杂 因为我正在使用 tidyeval 并且只是使用is null var 抛出未找
  • VBA、ADO.Connection 和查询参数

    我有 Excel VBA 脚本 Set c nn CreateObject ADODB Connection conn Open report Set rs conn Execute select from table 脚本工作正常 但我想
  • linux下如何挂载android的img文件? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 最近 我对android rom感兴趣 我想更改和重建它们 所以 我在我的 XOOM 上做了一些测试
  • C++:Cheat Engine 和 ArtMoney 等应用程序如何工作?

    问完后这个问题 C 我可以用指针超出应用程序的内存范围吗 https stackoverflow com questions 2976058 c can i get out of the bounds of my apps memory w
  • 我怎样才能找到这个 Json 对象的长度

    我想找到这个 JSON 对象的长度 所以有人告诉我如何获得 JSON 对象的长度 意味着我想知道这个 json 对象包含多少数据 var ddData 01 United States 02 United Kingdom 03 Aruba
  • 是否有一个函数可以将 ipAddress 作为字符串并告诉我它是否是不可路由的 IP 地址?

    我正在尝试确定 IP 地址是否可路由 例如 如果我收到 127 0 0 1 我就知道这是环回 即 localhost 我无法在 NET 或任何其他语言中找到此功能 因此我开始编写自己的函数 但还远未完成 在我花大量时间编写这个函数之前 有谁
  • 将平铺 Google 地图与 OpenLayers 3 结合使用

    如何将 google 地图与 OpenLayers 3 一起使用 我想从 OpenLayers 2 迁移到 3 这是一个例子 谷歌地图与 OpenLayers 集成示例 http openlayers org en v3 0 0 examp
  • 每天按顺序选择 10 行

    我有一个带有日期 时间戳 记录的数据库 我需要每天选择10条记录 每天还有更多 并按几列对它们进行排序 该查询应该是什么样子 您必须每天在子查询中获取 10 条记录 并通过左连接将它们连接到主表 这样您每天最多可以获得 10 条记录 SQL
  • 错误:“无法修改返回值”c#

    我正在使用自动实现的属性 我想解决以下问题的最快方法是声明我自己的支持变量 public Point Origin get set Origin X 10 fails with CS1612 错误消息 无法修改 表达式 的返回值 因为 它不
  • 在单个查询中从 mongodb 中的 2 个集合中获取数据

    我想从 2 个独立的集合中获取数据并根据date通过单个查询 这甚至可能在mongodb 我有收藏 订单类型1 id 1 name Hello1 date 2016 09 23T15 07 38 000Z id 2 name Hello1