gpt4 book ai didi

node.js - 如果删除 'sort',mongodb 'limit' 将无法正常工作

转载 作者:可可西里 更新时间:2023-11-01 10:31:52 25 4
gpt4 key购买 nike

我是 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 occurred]

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

注意:我的收藏包含 84k 条记录。

我的问题:如果我设置一些限制,它工作正常,我尝试将其限制在 64k 以内,当我尝试 74k 时我遇到了问题 [错误:发生 parseError]

"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 在评论中通知了我:

  1. 代码有语法问题
  2. 这可能是 toArray 问题的原因

答案:

  1. 我得到了引用 mongodb 页面的代码(链接在开头给出)所以这不是语法问题,如果给出限制,它可以很好地处理我的代码。所以不是语法错误

  2. 我试过了

    collection.find().toArray(函数(错误,数据){ 如果(错误){ 控制台日志(错误); } 别的 { 控制台日志(数据长度) } res.send(JSON.stringify(数据));});

我得到的结果没有错误。

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

所以不是 toArray() 问题

此问题仅与排序有关,代码在 64k 数据上运行良好。为什么?

最佳答案

您的排序在第一个示例中从未起作用。语法错误

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

-1 降序。

另外,不是问题,但我看到你在另一个问题上做了同样的事情,你 json.stringify 错误,只需将其记录到控制台即可。然后您就会看到自己做错了什么。

下面的用法很好用,所以如果你没有得到结果,那么你正在做一些与这里呈现的不同的事情:

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() 之前的查找,如果这仍然让您望而却步。

关于node.js - 如果删除 'sort',mongodb 'limit' 将无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21926669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com