首页 > 数据库技术 > 详细

MongoDB关联查询

时间:2018-09-27 13:46:11      阅读:177      评论:0      收藏:0      [点我收藏+]

目录

Aggregate

  1. 在 MongoDB 中属于重量级工具
  2. pipeline 管道模型理论:后面操作的数据源来源于上一次操作的结果
  3. pipeline aggregate stages
$project // 指定获取字段
$match // 筛选
$redact
$limit
$skip
$unwind
$group
$sample
$sort
$geoNear
$lookup // 关联
$out
$indexStats

$lookup 关联表

product 表:
_id | productname | price
--- | --- | ---
1.0 | 商品1 | 15.0
2.0 | 商品2 | 36.0

orders 表:
_id | pid | ordername
---|--- | ---
1.0 | 1.0 | 订单1
2.0 | 2.0 | 订单2
3.0 | 3.0 | 订单3
4.0 | 4.0 | 订单4

db.product.aggregate([
     {
       $lookup:
         {
            from: "orders", // 需要关联的表
            localField: "_id", // product 表需要关联的键
            foreignField: "pid", // orders 的 matching key
            as: "inventory_docs" // 对应的外键集合的数据
          }
    }
 ])

$match 筛选数据

// 筛选出价格 大于 20 的商品
db.product.aggregate([
    {
       $lookup: {
            from: "orders", // 需要关联的表
            localField: "_id", // product 表需要关联的键
            foreignField: "pid", // orders 的 matching key
            as: "inventory_docs" // 对应的外键集合的数据
        }
    },
    {
        $match: {
           price: { $gt:20 }
        }
    }
 ])

$project 指定获取字段

// 价格大于 20 的订单
db.product.aggregate([
    {
       $lookup: {
            from: "orders", // 需要关联的表
            localField: "_id", // product 表需要关联的键
            foreignField: "pid", // orders 的 matching key
            as: "inventory_docs" // 对应的外键集合的数据
        }
    },
    {
        $match: {
           price: { $gt:20 }
        }
    },
    {
        $project:{
            "inventory_docs": 1,
            "_id": 0
        }
    }
 ])

MongoDB关联查询

原文:https://www.cnblogs.com/my3306/p/9712494.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!