performance - 限制服务器端“ meteor ”中的结果数量?

标签 performance meteor database-connection subscriptions

我有一些代码,如下所示。我在Mongo中的关键字集合中大约有6万个条目。我真的只想要前25名,所以我试图设定一个极限值。我正在运行相同的查询以打印出我的结果数量。由于某种原因,该限制似乎不起作用,因为我的日志消息显示为60K左右。

这样的事情不可能吗?我可以在有效的客户端上设置一个限制,但是我想我会尝试限制服务器上的内容,以减少发送的数据量。

一些其他信息:

  • 我使用的是我自己的Mongo数据库,而不是 meteor 提供的数据库;用env变量
  • 指向它
  • 版本0.5.7

  • 任何帮助将不胜感激。
    if (Meteor.isServer) {
       Meteor.startup(function() {
       console.log('server startup');
    
       Meteor.publish("keyword_hits", function() {
            console.log('keywords: ' + Keywords.find({}, {sort: {count:-1}, limit:25}).count());
            return Keywords.find({}, {sort: {count:-1}, limit:25});
        });
     });
    

    最佳答案

    借助Meteor随附的Mongo API,.count()无需考虑LimitsSkips,因此您所看到的将始终是集合中的最大数量。

    如果你这样做

    Meteor.publish("keyword_hits", function() {
            console.log('keywords: ' + Keywords.find({}, {sort: {count:-1}, limit:25}).fetch().length);
            return Keywords.find({}, {sort: {count:-1}, limit:25});
    });
    

    因此,您可以调用.count()而不是.fetch()来返回从集合中选择的25个条目,然后对其调用.length,您将看到返回了正确数量的条目。

    我实际上开了一个有关.count()的问题,因为在普通的Mongo中,您可以执行:.count({'applySkipLimit': true});,它将考虑到您的跳过和限制。

    无论如何,那是你的问题。

    关于performance - 限制服务器端“ meteor ”中的结果数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15095603/

    相关文章:

    mysql - 查询在没有索引的情况下运行得更快。为什么?

    node.js - 在 Meteor 1.0 中加载 NPM 包?

    javascript - 在 google-map-react 中向 Google map 添加标记

    javascript - 自调用函数中的不可变 undefined

    c++ - signed int 数组的高性能比较(使用英特尔 IPP 库)

    meteor - 使用 Meteor 进行 SEO 的动态 URL 变量

    c# - 数据库驱动分发

    c++ - 使用 C++ 将数据连接并插入到 MS Access 表中

    java - 如何从 servlet 连接到数据库。我试过下面的代码,但控制每次都异常

    sql-server - 使用 SUM() 而不使用 ISNULL() 是否安全