📅  最后修改于: 2023-12-03 14:46:51.133000             🧑  作者: Mango
在Mongoose中,Query.prototype.j()允许我们执行MongoDB的聚合操作。它允许我们将一个或多个聚合管道运行在查询结果上。
query.j(pipeline, options);
其中,
const mongoose = require('mongoose');
// 连接到本地test数据库
mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true });
// 引入Schema和Model
const Schema = mongoose.Schema;
const Model = mongoose.model;
// 定义BookSchema
const BookSchema = new Schema({
title: String,
author: String,
price: Number
});
// 定义BookModel
const Book = Model('Book', BookSchema);
// 使用$match和$group聚合操作
const pipeline = [
{ $match: { price: { $gte: 10 } } },
{ $group: { _id: '$author', totalPrice: { $sum: '$price' } } }
];
// 查询
Book.find().j(pipeline).exec((err, result) => {
if (err) {
console.error(err);
} else {
console.log(result);
}
// 断开连接
mongoose.disconnect();
});
在上面的示例中,我们定义了一个名为Book的模型,并使用$match和$group聚合操作按作者分组计算书籍的总价。
我们使用find()方法查询所有的书籍,然后使用j()方法执行聚合管道。最后,我们使用exec()方法执行查询并将结果打印到控制台上。