Sails.js mongodb map reduce

3
我使用sails和sails-mongo,并且希望在集合之间执行聚合操作。我想重复使用waterline使用的连接对象,而不是创建一个完全新的到mongodb服务器的连接。是否可以在某个地方获取此连接对象,并且它能执行任何类型的查询?
这基于对waterline/sails目前不能执行聚合操作的理解。
2个回答

3

听起来你正在寻找.native方法,它返回原始的mongo集合实例。这允许你使用本地的Mongo方法。例如,如果你在Sails中有一个User模型,你可以这样做:

User.native(function(err, userCollection) {

    userCollection.aggregate(...)

}

原生Node Mongo驱动程序的文档在这里,其中包括有关如何进行聚合的部分。

.native方法的文档位于sailsjs.org


你在哪里找到这个信息的?除了阅读 sails-mongo 源代码并特别查找外,我没有找到任何关于native方法的参考。 - mrmagooey

1

为了减少搜索并分享经验,这里提供了一个在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/


1
你的代码中缺少一个 **}**,最终应该像这样:});}); - aleix
很高兴能帮忙 :D - aleix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接