美文网首页
$lookup 多集合之间关联 --- 2023-04-20

$lookup 多集合之间关联 --- 2023-04-20

作者: 一位先生_ | 来源:发表于2023-04-19 12:43 被阅读0次

两个集合之间关联:简单示例

db.post.aggregate([
  { "$match": { "rating": "important" } },
  { "$sort": { "date": -1 } },
  { "$limit": 20 },
  { "$lookup": {
    "localField": "user_id",  //当前集合关联的字段
    "from": "user", //关联那个集合
    "foreignField": "_id",  //关联集合的关联字段
    "as": "userinfo" //最终结果放在items里
  } },
  { "$unwind": "$userinfo" },
  { "$project": {
    "text": 1,
    "date": 1,
    "userinfo.name": 1,
    "userinfo.country": 1
  } }
]);

参考:https://www.cnblogs.com/duhuo/p/6068879.html

多个集合可参考:
https://www.5axxw.com/questions/content/7945v1

复杂示例:两集合涉及多个匹配条件

//两集合查询 第二步

db.pm_sys_facebook_creative_material.aggregate([
     {
    
    '$match': {
         'pm_creative_id': {
        "$in": [4177927,
4177924,
4177923,
3932179,
3932165,
3932159,
3932151,
3663395,
3663394,
3663391,
3663390,
3663389,
3663388,
3585550,
3571106,
3571094,
3571085,
3571082,
3571077,
3571074,
3562993,
3562992,
3562991,
3562990,
3562989,
3521367,
3395651,
3559068,
3562395,
3562229,
3562228,
3582015,
3561942,
3561937,
3561933,
3561853,
3538177,
3405656,
3559020,
3558277,
3557816,
3521375,
3557813,
3557812,
3557140,
3582014,
3556837,
3556836,
3556835,
3556834,
3556831,
3556830,
3556829,
3556828,
3556827,
3556825,
3556824,
3556823,
3556822,
3556820,
3377412,
3396261,
3582013,
3501193,
3463143,
3461181,
3377412,
3377406,
3412544,
3404780,
3431695,
3404179,
3396240,
3394016,
3394009,
3394005,
3393998,
3393997,
3390772,
3387294,
3379006,
3378973,
3376700,
3369083,
3369077,
3214127,
3187146,
3420058,
3420057,
3431159,
3419619,
3461158,
3419618
        ]
      },
            'account_id':{'$ne': ''},
    }
  },
    
   {
      $lookup: {
         from: "pm_sys_facebook_material_library",
         let: { 
                                cm_account_id: "$account_id",
                cm_hash_video_id: "$hash_video_id" 
                            },
         pipeline: [ {
            $match: {
               $expr: {
                  $and: [
                     { $eq: [ "$$cm_account_id", "$account_id" ] },
                     { $eq: [ "$$cm_hash_video_id", "$material_key" ] }
                  ]
               }
            }
                        
         }],
         as: "m"
      }
   },
     {
    $unwind: "$m" 
  },
         {
    "$project": {
      "id": 1,
      "m.hash": 1,
      "m.pm_material_uri": 1,
      "m.pm_thumbnail_uri": 1,
      "m.material_name": 1,
      "m.material_size": 1,
      "m.material_type": 1,
            "m.material_key": 1,
    }
  }
])

相关文章

  • 推荐算法-关联分析(关联规则)

    关联分析又称关联挖掘,就是在交易数据、关系数据或其他信息载体中,查找存在于项目集合或对象集合之间的频繁模式、关联、...

  • 认知一体化~192

    . 动量要素的结构功能, 是‘关联性集合与 集合性关联’的维系集成。 体现着各维层要素之间, 别立同异效应的整向运...

  • 《算法与数据结构 C语言描述》第六章 集合与字典

    集合与字典是两种常用的数据结构,应用非常广泛字典是关联的集合。集合主要考虑集合之间的并、交和差操作,字典主要关心其...

  • Android Task

    什么是task 简单说task就是一些相关联的activity的集合,但activity之间不一定非得相关联。当我...

  • 数据库(关系模型与关系代数)

    1. 关系 关系数据库是表的集合,即关系的集合。表中一行代表的是若干值之间的关联,即表的一行是由有关联的若干值构成...

  • Swift-存储类型-字典

    字典存储相同类型的键之间的关联,以及没有定义顺序的集合中相同类型的值的关联。 每个值都与唯一键相关联,该键用作字典...

  • Mongodb多表关联查询$lookup

    $lookup聚合中常见的操作符,可以对数据库中的未分片集合执行外部集合联接,以过滤“联接”集合中的文档以进行处理...

  • 一对多的双向

    一对多指的是类与集合之间的关系多对一指的是类与类之间的关系 one-to-many:一对多指的是类与集合之间的关系...

  • 知识图谱技术解剖

    本体、知识库、知识图谱、知识图谱识别之间的关系? 本体:领域术语集合。 知识库:知识集合。 知识图谱:图状具有关联...

  • Redis集合

    Redis集合 redis集合最厉害的地方在于组合和关联多个集合

网友评论

      本文标题:$lookup 多集合之间关联 --- 2023-04-20

      本文链接:https://www.haomeiwen.com/subject/clxljdtx.html