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))


})
原文地址:https://www.cnblogs.com/xc-chejj/p/10933618.html