2015-06-20 39 views
1

我有一個擁有大約600000條記錄的數據庫。
我正在使用sails.js,但使用 當我用水線方式獲取數據時需要很長時間才能獲取600000條記錄(約17秒),並且它具有有限的查詢,即沒有訪問連接表。所以我加入了兩個查詢的結果,然後過濾了它所花費的時間。

因此,我決定使用MongoDB而不是水線,而我想知道是否可以以某種方式使用Blueprint API而不鏈接到水線模型。如何在風帆而不是水線中使用MongoDB

如何使用MongoDB代替水線?

回答

1

如果您想使用Sails模型API,您可以覆蓋控制器中的藍圖方法。

所以覆蓋,也就是說,User型號,在UserController.js創建以下功能:

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 
     }) 
    } 
    }) 

} 

希望這有助於。