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时,为什么会出现错误?
尼尔在评论中通知我:
- 代码有语法问题
- 这可能是toArray问题的原因
回答:
-
我得到的代码引用的MongoDB页面(链接给出在开始)所以这不是一个语法问题,它的工作正常与我的代码,如果限制给。 所以不是一个语法错误
-
我试过了
()函数()函数()函数()函数()函数;});
我得到的结果没有错误。
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()
之前。
- 为什么Mongoose在DB中存在响应空字段(已解决)
- 没有MongoJS的Node.js + MongoDB
- 在MongoDB中,当用多个参数进行search时,如何知道哪个参数匹配
- 使用Aleph / Laminaasynchronous访问MongoDB
- 从mongoDB和Nodejs获取数据:toArray不是函数错误
- NODE.JS:致命错误 – JS分配失败 – 处理内存不足,同时parsing大型的Excel文件
- Node.js结合mongoose和Sails水线
- Mongodb tailable游标,高CPU使用率 – nodejs + mongodb
- 有一个简单的方法来打开从节点中的Mongo可读stream吗?