2014-02-21 62 views
2

我是新與MongoDB中,我被闖民宅試圖排序選項:http://mongodb.github.io/node-mongodb-native/markdown-docs/queries.html#sortingMongoDB的「排序」不工作,如果「限價」被刪除

我的代碼:

MongoClient.connect('mongodb://127.0.0.1/test', function (err, db) { //connect to mongodb 
    var collection = db.collection('qr'); 
    var options = { 
     "limit": 20, 
     "sort": "CARDNO" 
    } 
    collection.find({}, options).toArray(function (err, data) { 
     console.log(data.length); 
     res.send(JSON.stringify(data)); 
    }); 
    console.log("successfully connected to the database"); 
    //db.close(); 
}); 

返回前20個記錄排序結果。

但是當我刪除 「限制」

MongoClient.connect('mongodb://127.0.0.1/test', function (err, db) { //connect to mongodb 
    var collection = db.collection('qr'); 
    var options = { 
     "sort": "CARDNO" 
    } 
    collection.find({}, options).toArray(function (err, data) { 
     console.log(data.length); 
     res.send(JSON.stringify(data)); 
    }); 
    console.log("successfully connected to the database"); 
    //db.close(); 
}); 

我收到提示

我試圖

console.log(err) 

它給[Error: parseError occured]在控制檯

/home/local/user/Desktop/node10k/routes/user.js:23 
       console.log(data.length); 
           ^
TypeError: Cannot read property 'length' of null 

注意:我的收集包含84k記錄。

我的問題:它的工作很好,如果我把一些限制,我試過最多64K限制了它的工作,當我嘗試74K我得到的問題[Error: parseError occured]

結果爲"limit" : 64020

Express server listening on port 3000 
successfully connected to the database 
64020 
GET /users 200 11735ms - 15.32mb 

結果爲"limit" : 74020

Express server listening on port 3000 
successfully connected to the database 
[Error: parseError occured] 

當「限制」超過64k時,爲什麼會出現錯誤?

尼爾通知我評論:

  1. 代碼有語法問題
  2. 這可能是問題的原因與指定者

答案:

  1. 我得到了代碼參考mongodb頁面(鏈接在開始給出)所以這不是一個語法問題,它與m很好地工作y代碼是否給予限制。所以不是一個語法錯誤

  2. 我試圖

    collection.find()指定者(函數(ERR,數據){ 如果(ERR){ 的console.log(ERR); 其他} {data_length} } res.send(JSON.stringify(data)); });

而且我得到的結果沒有錯誤。

Express server listening on port 3000 
successfully connected to the database 
84050 
GET /users 200 17525ms - 20.1mb 

所以不是指定者()問題

此問題僅帶有排序和代碼工作正常使用64K的數據。爲什麼?

+0

爲什麼你不嘗試調試,如果mongo發現錯誤?您嘗試了其他哪些調試步驟? –

+0

我該如何調試? – Okky

+0

@MukeshSoni我試過的console.log(JSON.stringify(ERR))的捐贈在控制檯 – Okky

回答

2

你的排序從來沒有在第一個例子中工作。語法錯誤

var options = { 
    "sort": { "CARNO": 1 } 
}; 

-1下降。

此外,沒有問題,但我已經看到你做同樣的一個問題,你json.stringifyerr,只要登錄就安慰。然後你會看到你做錯了什麼。

下使用工作得很好,所以如果它是如何呈現在這裏,你沒有得到結果,那麼你正在做的事情不同。

VAR MongoClient =需要(「mongodb的」)MongoClient;

MongoClient.connect('mongodb://127.0.0.1/test', function (err, db) { 

    var collection = db.collection('stuff'); 

    var options = { 
    "sort": { "duration": -1 }, 
    }; 
    collection.find({},options).toArray(function(err, data) { 
    if (err) { 
     console.log(err); 
    } 
    console.log(data); 
    }); 

}); 

.sort()到查找.toArray()如果這依然未能在你面前可以。

+0

我試過''sort「:{」CARNO 「:1}';不工作 – Okky

+0

仍然相同,'console.log(JSON.stringify(err))'results'[Error:parseError occured]' – Okky

+0

@SreekeshOkky我看到你還沒有**閱讀**我們寫什麼。閱讀並比較你的代碼。你正在做**某事**不同。 –