如何在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 }) } }) }
希望这可以帮助。