MongoDB學習day09--Mongoose aggregate 多表關聯查詢

Mongodb的aggregate應用以前已經說過了。html

能夠參考day06mongoose

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


})
相關文章
相關標籤/搜索