mongodb'sorting'不工作,如果'限制'被删除

我是新的MongoDB,我试图通过引用sorting选项: http : //mongodb.github.io/node-mongodb-native/markdown-docs/queries.html#sorting

我的代码:

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

返回sorting结果的前20条logging。

但是当我删除“限制”

 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 

注意:我的collections包含84k条logging。

我的问题 :它工作正常,如果我把一些限制,我试图达到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. 这可能是toArray问题的原因

回答:

  1. 我得到的代码引用的MongoDB页面(链接给出在开始)所以这不是一个语法问题,它的工作正常与我的代码,如果限制给。 所以不是一个语法错误

  2. 我试过了

    ()函数()函数()函数()函数()函数;});

我得到的结果没有错误。

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

所以不是一个toArray()问题

这个问题只与sorting和64k数据的代码工作正常。 为什么?

第一个例子你的sorting从来没有工作。 语法是错误的

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

-1降序。

另外 ,不是问题,但我看到你在另一个问题上做同样的事情 ,你 json.stringify err ,只需将其login到控制台。 然后你会看到你做错了什么。

下面的用法工作得很好,所以如果你没有得到一个结果,那么你正在做一些不同的东西,如何在这里呈现:

var MongoClient = require('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()之前。