我使用sails和sails-mongo,并且希望在集合之间执行聚合操作。我想重复使用waterline使用的连接对象,而不是创建一个完全新的到mongodb服务器的连接。是否可以在某个地方获取此连接对象,并且它能执行任何类型的查询?
这基于对waterline/sails目前不能执行聚合操作的理解。
这基于对waterline/sails目前不能执行聚合操作的理解。
听起来你正在寻找.native
方法,它返回原始的mongo
集合实例。这允许你使用本地的Mongo方法。例如,如果你在Sails中有一个User
模型,你可以这样做:
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/
});});
- aleix
native
方法的参考。 - mrmagooey