如何实现更快的MongoDB聚合?
我正在运行以下聚合,结果将近90秒:如何实现更快的MongoDB聚合?,mongodb,aggregation,Mongodb,Aggregation,我正在运行以下聚合,结果将近90秒: Rack.aggregate([ { $match: { location } }, { $unwind: "$boxes" }, { $project : { "reads" : "$boxes.reads", rackid: 1, "box": "$boxes.sessio
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服务器并实现备忘录化