我将sails 与sails-mongo 一起使用,并且希望在集合中执行聚合。我想重用 waterline 使用的连接对象,而不是创建与 mongodb 服务器的全新连接。这个连接对象在某处可用吗?它可以执行任何查询类型吗?
这是基于对水线/帆目前无法进行聚合的理解。
听起来您正在寻找.native
返回原始节点mongo
集合实例的方法。这允许您使用本机 Mongo 方法。例如,如果您是User
Sails 中的模型,您将执行以下操作:
User.native(function(err, userCollection) {
userCollection.aggregate(...)
}
本地 Node Mongo 驱动程序的文档在这里,包括关于如何进行聚合的部分。
.native
该方法的文档位于sailsjs.org 上。
只是为了减少搜索和分享经验,这里是 Sails.js 中 mongodb 聚合的工作模板(用于模型用户):
User.native(function(err, collection) {
if (err) return res.serverError(err);
collection.aggregate(
[
//Your matching and grouping here
//{ $match : { country : user.country } },
//{ $group: { _id: "$age", count: { $sum: 1 } } }
], function(err, result){
if (err) return res.serverError(err);
console.log(result);
}
);
});
有关聚合的更多信息:http: //docs.mongodb.org/manual/tutorial/aggregation-with-user-preference-data/