我是mongodb的新手,我正在尝试排序选项: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();
});
返回排序结果的前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条记录。
我的问题:如果我设置了一些限制,它工作正常,当我尝试74k时,我尝试了64k限制其工作我遇到了问题[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时我会收到错误?
Neil在评论中通知了我:
答案:
我得到的代码引用了mongodb页面(在开头给出了链接)所以这不是一个语法问题,如果有限制,它可以正常使用我的代码。所以不是语法错误
我试过
collection.find()。toArray(function(err,data){ if(错误){ 的console.log(ERR); } else { 执行console.log(data.length) } res.send(JSON.stringify(数据)); });
我得到的结果没有错误。
Express server listening on port 3000
successfully connected to the database
84050
GET /users 200 17525ms - 20.1mb
所以不是toArray()问题
此问题仅附带排序,代码可以正常使用64k数据。为什么呢?
答案 0 :(得分:2)
你的排序从未在第一个例子中起作用。语法错误
var options = {
"sort": { "CARNO": 1 }
};
或-1
降序。
同样,不是问题,但我看到你在另一个问题上做同样的事情,你不 json.stringify
err
,只需将其登录到控制台。然后你会看到你做错了什么。
以下用法很好,所以如果你没有得到结果,那么你正在做一些不同于这里的呈现方式:
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()
之前的搜索结果,如果这仍然无法解决您的问题。