如何在mongoDB的嵌套数据中使用聚合$ lookup?

迈克尔·莱斯特

我有这样的收藏:

// 任务

[
  {_id: '123', _user: '345', _solutions: ['567', '678'] }
]

//解决方案

[
  {  _id: '567', _task: '123', _user: '345' },
  {  _id: '678', _task: '123', _user: '345' }
]

//用户

[
 { _id: '345', name: 'Tom' }
]

使用此代码:

await db
    .collection<Task>('tasks')
    .aggregate([
      { $match: { _id: id } },
      {
        $lookup: {
          from: 'solutions',
          // I guess here should be pipeline  
          localField: '_solutions',
          foreignField: '_id',
          as: '_solutions',
        },
      },
      { $lookup: { from: 'users', localField: '_user', foreignField: '_id', as: '_user' } },
    ])

我得到如下结果:

task = {
  _id: 5e14e877fa42402079e38e44,
  _solutions: [
    {
      _id: 5e15022ccafcb4869c153e61,
      _task: 5e14e877fa42402079e38e44,
      _user: 5e007403fd4ca4f47df69913, <-- this should be userObject instead
    },
    {
      _id: 5e164f31cafcb4869c153e62,
      _task: 5e14e877fa42402079e38e44,
      _user: 5e007403fd4ca4f47df69913, <-- this should be userObject instead
    }
  ],
  _user: [
    {
      _id: 5e007403fd4ca4f47df69913,
      _solutions: [Array],
      _tasks: [Array],
    }
  ]
}

而且我不知道如何$lookup进入_solutions._user-所以我将使用确切的用户对象代替objectId。

米克尔

您可以运行带有自定义管道的$ lookup进行外部查找,并使用常规管道供用户使用:

db.tasks.aggregate([
    {
        $match: {
            _id: "123"
        }
    },
    {
        $lookup: {
            from: "solutions",
            let: { solutions: "$_solutions" },
            pipeline: [
                { $match: { $expr: { $in: [ "$_id", "$$solutions" ] } } },
                {
                    $lookup: {
                        from: "users",
                        localField: "_user",
                        foreignField: "_id",
                        as: "_user"
                    }
                },
                { $unwind: "$_user" }
            ],
            as: "_solutions",      
        }    
    }  
])

蒙哥运动场

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 mongodb 中使用多个 $lookup 和聚合

来自分类Dev

嵌套数组 ID 的 $lookup 聚合

来自分类Dev

如何在mongodb $ lookup聚合内使用NOT IN数组条件

来自分类Dev

我如何在Mongodb中使用$ lookup获取引用的dcoument作为嵌套文档?

来自分类Dev

如何在对象嵌套数组中进行$ lookup

来自分类Dev

MongoDB聚合$ lookup $ match

来自分类Dev

MongoDB聚合查询$ lookup

来自分类Dev

嵌套数组中的$ lookup

来自分类Dev

Mongo聚合和带有$ lookup的$ group嵌套数组

来自分类Dev

如何使用MongoDB将`$ lookup`聚合为`findOne()`

来自分类Dev

如何使用MongoDB C#驱动程序聚合$ lookup?

来自分类常见问题

如何在Mongoose中的$ lookup中使用带有子子数组中的外键的聚合?

来自分类Dev

如何在Mongoose中的$ lookup中使用带有子子数组中的外键的聚合?

来自分类Dev

mongodb与$ group和$ lookup聚合

来自分类Dev

MongoDb聚合$ lookup和$ project

来自分类Dev

MongoDb:使用$ lookup查找深度嵌套的对象

来自分类Dev

Mongodb $ lookup使用管道嵌套对象

来自分类Dev

嵌套文档上的MongoDB $ lookup

来自分类Dev

聚合$ lookup对象数组

来自分类Dev

MongoDB $ lookup和$ match

来自分类Dev

$ lookup搜索Mongodb

来自分类Dev

在Excel中使用LOOKUP的问题

来自分类Dev

在 $group 之后使用 $lookup

来自分类Dev

如何在POST方法中使用dns.lookup()?

来自分类Dev

如何在Angular2-Meteor中使用$ lookup

来自分类Dev

MongoDb:聚合$ lookup并过滤外部文档

来自分类Dev

mongodb 聚合中的多个 $lookup 阶段

来自分类Dev

如何在SSRS中使用Lookup从不同数据集中获取基于年和月的比率

来自分类Dev

使用带有$ lookup和$ match的聚合的搜索查询mongodb

Related 相关文章

热门标签

归档