快速查找后慢速播放Meteor

时间:2017-03-13 15:19:26

标签: mongodb meteor fetch kadira

我们正在使用Kadira来确定我们的Meteor应用程序有时运行缓慢的原因。你可以在图片中看到查找操作很快,而fetch几乎花了7秒。我知道这是一个悬而未决的问题,但有没有人知道可能导致这种情况的原因?

enter image description here

2 个答案:

答案 0 :(得分:1)

find命令将返回一个游标,它是指向数据库中对象的指针,而fetch将返回一个包含所有对象的数组直接到您的浏览器。

似乎你正在检索很多物体,因为6秒钟是很多时间。我建议你检查一下你是否真的需要获取太多的对象,因为用户可能不会在一个屏幕上看到所有数据。

也许您已经拥有本地MongoDB中的数据,您可以通过块查询它们。 (使用MongoDB中的limit约束。)

答案 1 :(得分:0)

我遇到了同样的问题,当时我要获取大约35000个文档。我使用了聚合函数( sakulstra:aggregate ),就我而言,它极大地提高了请求。结果格式显然不一样,但是它仍然很容易用于计算我需要的所有东西。

之前(7000毫秒):

const historicalAssetAttributes = HistoricalAssetAttributes.find({
        date:{'$gte':startDate,'$lte':endDate},
        assetId: {$in: assetIds}
    }, {
        fields:{
            "date":1,
            "assetId":1,
            "close":1
        }
    }).fetch();

(300毫秒后):

const historicalAssetAttributes = HistoricalAssetAttributes.aggregate([
        {
            '$match': {
                date: {'$gte': startDate, '$lte': endDate},
                assetId: {$in: assetIds}
            }
        }, {
            '$group':{
                _id: {assetId: "$assetId"},
                close: {
                    '$push': {
                        date: "$date",
                        value: "$close"
                    }
                }
            }
        }
    ]);