【发布时间】:2014-03-29 08:13:22
【问题描述】:
我将sails 与sails-mongo 一起使用,并且希望在集合中执行聚合。我想重用 waterline 使用的连接对象,而不是创建与 mongodb 服务器的全新连接。这个连接对象在某处可用吗?它可以执行任何查询类型吗?
这是基于对水线/帆目前无法进行聚合的理解。
【问题讨论】:
标签: mongodb sails.js waterline
我将sails 与sails-mongo 一起使用,并且希望在集合中执行聚合。我想重用 waterline 使用的连接对象,而不是创建与 mongodb 服务器的全新连接。这个连接对象在某处可用吗?它可以执行任何查询类型吗?
这是基于对水线/帆目前无法进行聚合的理解。
【问题讨论】:
标签: mongodb sails.js waterline
听起来您正在寻找.native 方法,该方法返回原始节点mongo 集合实例。这允许您使用本机 Mongo 方法。例如,如果你是 Sails 中的 User 模型,你会这样做:
User.native(function(err, userCollection) {
userCollection.aggregate(...)
}
本机 Node Mongo 驱动程序的文档是 here,包括如何进行聚合的部分。
.native 方法的文档是on the sailsjs.org。
【讨论】:
native 方法的引用
只是为了减少搜索和分享经验,这里是 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/
【讨论】:
});});