【发布时间】:2020-03-21 07:05:24
【问题描述】:
所以我对大约 500k 文档进行了以下查询,并且在数据库方面确实很慢:
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 的内存限制,但不允许 外部排序。传递 allowDiskUse:true 以选择加入。
【问题讨论】:
标签: mongodb mongodb-query mongodb-indexes