如何实现更快的MongoDB聚合?

如何实现更快的MongoDB聚合?,mongodb,aggregation,Mongodb,Aggregation,我正在运行以下聚合,结果将近90秒: Rack.aggregate([ { $match: { location } }, { $unwind: "$boxes" }, { $project : { "reads" : "$boxes.reads", rackid: 1, "box": "$boxes.sessio

我正在运行以下聚合,结果将近90秒:

Rack.aggregate([
        {
            $match: {
                location
            }
        },
        {
            $unwind: "$boxes"
        },
        { $project : { "reads" : "$boxes.reads", rackid: 1, "box": "$boxes.session"}},
        { $unwind : "$reads" },
        {$project: {epc: { $objectToArray: "$reads" }, rackid: 1, box: 1}},
        { $unwind : "$epc" },
        {$group: {_id:  {$substr: ["$epc.k", 0, 13]}, "total": {"$sum": {"$size": "$epc.v"}}, count: {$sum: 1}, racks: { $push: {"rack": "$rackid", "box": "$box"}}}},
        { $lookup : {from: "inventories", localField: "_id", foreignField: "barcode", as: "Details"} }
    ]);
我的库存集合包含40000条记录,我怀疑这可能是查询速度太慢的主要原因。你能建议我是否能改进我的查询或任何其他方法,也许是备忘录?谢谢

我的建议是:

在位置、id和条形码上添加索引,这样可以提高搜索速度

您可以使用mongodb Compass或通过编程实现:

db.inventories.createIndex({ barcode: 1 });
db.racks.createIndex({ location: 1 });
_默认情况下,id有一个索引

另一个解决方案可能是安装redis服务器并实现备忘录化