当前位置: 首页 > 知识库问答 >
问题:

如果删除'limit',则mongodb“sort”不起作用

燕嘉颖
2023-03-14

我的代码:

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)
/home/local/user/Desktop/node10k/routes/user.js:23
                console.log(data.length);
                                ^
TypeError: Cannot read property 'length' of null
Express server listening on port 3000
successfully connected to the database
64020
GET /users 200 11735ms - 15.32mb

“限制”的结果:74020

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

为什么当“限制”超过64K时我会出错?

尼尔在评论中通知我:

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

所以不是toArray()问题

这个问题只伴随着sort而来,代码可以很好地处理64K数据。为什么?

共有1个答案

常彭薄
2023-03-14

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

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

-1用于降序。

另外,问题不是问题,但我已经看到您在另一个问题上也这样做了,您不json.stringifyerr,只将其记录到控制台。然后你就会看到你做错了什么。

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

});
 类似资料:
  • 我有一个如下所示的表关系,我正在尝试级联持久性和从Entity2(表2)中删除,这意味着从表2中删除记录应该删除表3中的条目,并在表2中保存数据,同时将表3中的相关数据持久化。 表1(实体1)(母公司)-------- 表1(父级)-------- 表1是表2和表4的共同父级 1)如果我使用CascadeType. REMOVE在Entity1和{CascadeType. PERSIST, Cas

  • 问题内容: 我试图通过执行以下循环来获取TreeMap的前10个元素: 该打印 工具,为什么可能不起作用? 更新 这是我的实现: 更新 这很有用:Java Map按值排序。 问题答案: public int compare(Integer a, Integer b) { if (base.get(a) >= base.get(b)) { return -1; } else { return 1;

  • 我使用的是Kafka版本0.8.2。在开发过程中,我想我可能需要删除一个主题。所以我所做的是在服务器配置文件中放入以下一行,并启动两台kafka服务器。 当我需要删除一个主题并运行以下命令时, 现在距我运行“删除主题”命令已经17个小时了,但Kafka仍在向我显示该主题已标记为删除。是Kafka的虫子还是我在这里做错了什么?因为在我看来这不正常。有人能就此澄清一下吗?

  • 我正在尝试以编程方式配置log4j2v2。11.1作为DefaultRolloverStrategy的一部分,使用新的删除操作删除旧文件。 正如您可以从下面的代码中看到的,我已将系统设置为每天创建日志文件,并在文件大小达到1MB时滚动该文件。 我尝试使用两个条件将删除操作添加到DefaultRolloverStrategy中—IfFileName和IfLastModified。IfFileName

  • 我尝试使用Registfit2.0来实现一个库系统。可以添加图书,列出所有图书信息,列出一本书信息,删除一本书,删除所有图书,更新一本书信息。 我的baseURL结尾有一个“/”: 前三个特性工作得很好: 您将在响应中看到,检查请求信息,method是“get”,但标记显示method=“delete”。 Update2:根据Dexter的建议,我添加了用于调试的HttpLoggingInterc

  • 我无法使用Hibernate JPA嵌入使cascase删除在Java EE容器管理的应用程序中工作。我们将不胜感激。我有一个实体‘公司',与其他实体有四个任何关系。当测试应用程序(使用Arquillian框架)时,我无法使级联删除工作;公司实体被删除,删除后子实体仍然存在。我读到了这里:JPA和Hibernate Cascade DELETE OneToMany不起作用,这可能是一个测试问题,所