MongoDB$match$组查询速度慢
因此,我对大约500k个文档进行了以下查询,但在数据库方面的查询速度非常慢:MongoDB$match$组查询速度慢,mongodb,mongodb-query,mongodb-indexes,Mongodb,Mongodb Query,Mongodb Indexes,因此,我对大约500k个文档进行了以下查询,但在数据库方面的查询速度非常慢: db.collection('news').aggregate( [ { $match: { feeds: { $in: feeds }, createdAt: { $lte: lastPostDate }, deleted: { $exists: false }
db.collection('news').aggregate(
[
{
$match: {
feeds: { $in: feeds },
createdAt: { $lte: lastPostDate },
deleted: {
$exists: false
}
}
},
{
$group: {
_id: { title: '$title' },
id: { $first: '$_id' },
title: { $addToSet: '$title' },
source: { $first: '$source' },
shortid: { $first: '$shortid' },
stats: { $first: '$stats' },
log: { $first: '$log' },
createdAt: { $first: '$createdAt' },
feedUpdated: { $first: '$feedUpdated' },
media: { $first: '$media' },
title: { $first: '$title' }
}
},
{ $sort: sort },
{
$skip: limit * (page - 1)
},
{
$limit: limit * 1
}
],
{
allowDiskUse: true,
cursor: {}
}
)
我知道allowDiskUse让它变慢了,但如果我禁用它,我会得到:
MongoError:超出了$group的内存限制,但不允许
外部排序。Pass allowDiskUse:选择加入为true
或
参考:-
let aggregation = MongoSchemaModel.aggregate([]);
aggregation.options = { allowDiskUse: true };
aggregation.exec((err, data) => {});
let aggregation = MongoSchemaModel.aggregate([], { allowDiskUse: true });
aggregation.exec((err, data) => {});