如何在sails中使用MongoDB而不是waterline

我有一个大约有600000条logging的数据库。
我正在使用sails.js,但是当我用水线方式获取数据需要很长的时间来获取600000条logging(约17秒),并有限的查询,即它没有访问连接表。 所以我join了两个查询的结果,然后过滤掉这个数据就花了很多的时间。

所以我决定使用MongoDB来代替水线,而我想知道是否可以在不连接到Waterline模型的情况下使用Blueprint API。

如何使用MongoDB而不是水线?

如果要使用Sails模型API,可以覆盖控制器中的蓝图方法。

因此,要覆盖,比如User Model,在UserController.js创build以下函数:

 find, create, update, destroy 

find将覆盖'get api/v1/user'

create将覆盖'post api/v1/user'

update将覆盖'put api/v1/user'

destroy将覆盖'delete api/v1/user'

一旦进入控制器,你可以在Mongo上运行一个native查询,如下所示:

在UserControllelr.js中

 find: function (req, res) { var packet = req.params.all(); // packet now has all url and posted parameters User.native(function (err, UserCollection) { if(err) { //handle error } else { // here you can run any native mongo Query using UserCollection // eg: UserCollection.aggregate( {"$match": {"gender": "Male"} }, {"$group": { "_id": "$socialNetwork", "count": {"$sum":1} } }, function (err, results) { //do stuff with results }) } }) } 

希望这可以帮助。