乐趣区

mongodb数据库之连表查询

在做自己的项目时,因为刚开始接触 mongodb 非关系型数据库以及关系型数据库的影响还是留在脑中,总会想着进行一个连表查询,然后看官网和资料学习了下,还有那个查询时使用正则来匹配,在这里做个记录

1.mongodb 正则匹配

/* 使用 $regex 字段匹配 */
name: {$regex: 'aa', $options: 'i'};
或者:name: {$regex: /aa/, $options: 'i'};
或者:name: {$regex: /aa/i};
/* 直接使用表达式 */
name: {/aa/i}
/* 使用 $in 来匹配,这个字段必须是一个数组 */
name: {$in: [/aa/]}

2. 连表查询

  • 使用 $lookup 来进行连表查询
/* aggregate 聚合操作,$unwind 将数组拆分成单个元素
 * $group 分组依据
 * $sum 统计
 * $project 将返回值进行筛选,是否返回筛选完后的某个字段
 * $match 匹配条件
 * */
usingRecord.aggregate([
    {
      $lookup: {
        from: 'resources', /* 要连接的表名 */
        localField: 'resource_id', /* 当前表对应的字段 */
        foreignField: '_id', /* 要连接的表的字段 */
        as: 'resourceInfo'  /* 查询结果中显示的字段名 */
      },
    },
    {
      $match: {'user_id': user_id}
    },
    {$unwind: '$resourceInfo'},
    {
      $sort: {_id: -1}
    }
  ])

3. 小结

  • mongodb 数据库是非关系型、文档型数据库,将有关联的数据存储在一份文档中就能够减少进行表与表之间的关联查询
  • 自己先在网上找资料学习后,然后在学习慕课网上的视频时,就有很大的感触,目前的话还是有一些迷惑,对于数据的插入我会找到更好的方法来实现

正在努力学习中,若对你的学习有帮助,留下你的印记呗(点个赞咯 ^_^)

  • 往期好文推荐:

    • 使用 vue 开发移动端管理后台
    • 实现单行及多行文字超出后加省略号
    • node 之本地服务器图片上传
    • 纯 css 实现瀑布流(multi-column 多列及 flex 布局)
退出移动版