zoukankan      html  css  js  c++  java
  • MongoDB学习day09--Mongoose aggregate 多表关联查询

    Mongodb的aggregate应用之前已经说过了。

    可以参考day06

    Mongoose的aggregate函数应用

    var mongoose=require('./db.js');
    var OrderSchema=mongoose.Schema({
      order_id:String,
      uid:Number,
      trade_no:String,
      all_price:Number,
      all_num:Number
    })
    var OrderModel=mongoose.model('Order',OrderSchema,'order');
    OrderModel.aggregate([
    {
      $lookup:{
      from:'order_item',
      localField:"order_id",
      foreignField:"order_id",
      as:"item"
      }
    }],function(err,docs){
        console.log(docs)
    });
    /*查询order_item,找出商品名称是酸奶的商品,酸奶这个商品对应的订单的订单号以及订单的总价格*/
    
    
    var OrderItemModel=require('./model/order_item.js');
    
    var OrderModel=require('./model/order.js');
    
    var mongoose=require('mongoose');
    
    //第一种实现方式
    /*
        OrderItemModel.find({"_id":"5b743da92c327f8d1b360546"},function(err,docs){
    
            // console.log(docs);
    
            var order_item=JSON.parse(JSON.stringify(docs));
    
            var order_id=order_item[0].order_id;
    
    
            OrderModel.find({"order_id":order_id},function(err,order){
    
                //    console.log(order);
    
                order_item[0].order_info=order[0];
    
    
                console.log(order_item)
            })
        })
    
    */
    
    //第二种方式 
    
    //mongoose中获取ObjectId           mongoose.Types.ObjectId
    
    OrderItemModel.aggregate([
    
        {
          $lookup:
            {
              from: "order",
              localField: "order_id",
              foreignField: "order_id",
              as: "order_info"
            }
       },{
        $match:{_id: mongoose.Types.ObjectId('5b743da92c327f8d1b360546')}
    
       }
    
    ],function(err,docs){
    
            if(err){
    
                console.log(err)
                return;
            }
    
            console.log(JSON.stringify(docs))
    
    
    })
  • 相关阅读:
    枚举
    张三先唱一遍要表演的歌曲,老师觉得张三唱歌不过关,
    不断要求用户输入一个数字(假定用户输入的都是正整数
    不断要求用户输入学生姓名,输入q结束.
    要求用户输入用户名和密码,只要不是admin、888888就
    计算1到100的整数和
    c# 九九乘法表
    c#三角形
    C#循环判断密码
    什么是发动机号,发动机号码是什么?
  • 原文地址:https://www.cnblogs.com/xc-chejj/p/10933618.html
Copyright © 2011-2022 走看看