在返回客户端APP之前,在mongodb服务器端执行多个查询并将这些查询的结果表连接起来

发布于 2025-01-16 12:52:34 字数 175 浏览 1 评论 0原文

在我的数据库中有很多集合。

我需要对每个集合执行查询。

然后通过公共 id 字段连接这些查询的输出。

据我所知,我需要执行多个查询,然后在结果返回给客户端时连接输出。

这可以通过对 MongoDB 的一次查询调用来完成吗?

编辑:

每个集合都将被分片。

In my database there are severy collections.

I need to perform a query on each of those collections.

And then join the output of those queries by a common id field.

As far as I know, I need to perform several queries and then join the outputs when the results are returned to the client.

Can this be done with one query call to MongoDB?

EDITED:

each of those collections will be sharded.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

放血 2025-01-23 12:52:36

可以通过 达到你想要的效果MongoDB 的聚合 功能。

  • 使用 $lookup查询多个集合。
  • 使用 $unwind来创建字段键。
  • 使用 $project来制作您自己的输出。

例如:

  • 脚本:
db.mainusers.aggregate([
  {
    $lookup: {
      from: 'subusers',
      localField: 'name',
      foreignField: 'name',
      as: 'subusers',
    },
  },
  {
    $unwind: '$subusers',
  },
  {
    $project: {
      _id: 1,
      email: 1,
      name: 1,
      subuserInfo: '$subusers.info',
    },
  },
])
  • 结果:
{
  _id: 'U5967278ce90299ce10f545889b786ba7',
  email: '[email protected]',
  name: 'Jay',
  subuserInfo: 'Some subuser Info',
}

You can achieve the effect you want through the Aggregation feature of MongoDB.

  • Use $lookup to query on multiple collections.
  • Use $unwind to make field key.
  • Use $project to make your own output.

For example:

  • Script:
db.mainusers.aggregate([
  {
    $lookup: {
      from: 'subusers',
      localField: 'name',
      foreignField: 'name',
      as: 'subusers',
    },
  },
  {
    $unwind: '$subusers',
  },
  {
    $project: {
      _id: 1,
      email: 1,
      name: 1,
      subuserInfo: '$subusers.info',
    },
  },
])
  • Result:
{
  _id: 'U5967278ce90299ce10f545889b786ba7',
  email: '[email protected]',
  name: 'Jay',
  subuserInfo: 'Some subuser Info',
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文