mongoose 的使用【05】:mongoose 中使用 aggregate 聚合管道【01、order查询】

 

./model/db.js

// 引入mongoose
const mongoose = require("mongoose");

//解决index索引引起的弃用提醒:(node:13616) DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.
mongoose.set("useCreateIndex", true);

// 连接数据库
mongoose.connect("mongodb://127.0.0.1:27017/jtdb", { useNewUrlParser: true, useUnifiedTopology: true }, function (err, connection) {
  if (err) {
    console.log(err);
    return;
  }
  console.log("连接数据库成功");
});
module.exports = mongoose;

 

./model/order.js

const mongoose = require("./db.js");

var OrderSchema = mongoose.Schema({
  order_id: String,
  title: String,
  price: Number,
  num: Number,
});

module.exports = mongoose.model("Order", OrderSchema, "order");

 

order.js

// order表关联order_item,只需要引入order表
var OrderModel = require("./model/order.js");
// 查询order表的数据
// OrderModel.find({}, function (err, data) {
//   console.log(data);
// });

// order表关联order_item,mongoose 的语法和mongo的语法基本相似
// 利用聚合管道查询出总价小于等于200的订单
OrderModel.aggregate(
  [
    {
      $lookup: {
        from: "order_item",
        localField: "order_id",
        foreignField: "order_id",
        as: "items",
      },
    },
    {
      $match: {
        all_price: { $lte: 500 },
      },
    },
  ],
  function (err, data) {
    if (err) return console.error(err);
    console.log(JSON.stringify(data));
  }
);

 

执行 node ./order.js 

输出:

[
    {
        "_id":"60053a31e811c2445c3e43e2",
        "order_id":"2",
        "uid":"7",
        "trade_no":"222",
        "all_price":140,
        "all_num":4,
        "items":[
            {
                "_id":"60053a31e811c2445c3e43e9",
                "order_id":"2",
                "title":"养乐多",
                "price":20,
                "num":2
            },
            {
                "_id":"60053a31e811c2445c3e43ea",
                "order_id":"2",
                "title":"金典牛奶",
                "price":10,
                "num":4
            },
            {
                "_id":"60053a31e811c2445c3e43eb",
                "order_id":"2",
                "title":"优乐美",
                "price":5,
                "num":6
            },
            {
                "_id":"60053a31e811c2445c3e43ec",
                "order_id":"2",
                "title":"伊利牛奶",
                "price":15,
                "num":2
            }
        ]
    }
]

 

posted @ 2021-01-18 12:49  半遮  阅读(360)  评论(0编辑  收藏  举报