如题 连表查询时 数据量太大经常性溢出,请问有什么好的处理方法?本人刚用mongodb不久 这问题困扰多时
db.user.aggregate([
{
"$match": {
"regis_time": {
"$gte": 1609689600,
"$lt":1614076936
}
}
},
{
"$lookup": {
"from": "expire",
"localField": "user",
"foreignField": "username",
"as": "expire"
}
},
{
"$project": {
"user": 1
}
},
{
"$unwind": "$expire"
},
{
"$match": {
"expire.deadtime": {
"$gte": 1614238275
}
}
}
])
mongo并不怎么推荐这种连表的方式。lookup一般只用来查询好的数据引入其他的集合一并返回。聚合的数据是一个流,你前面match加入搜索到100条数据,就相当于100元素依次流淌下去,每一个都需要经历整个聚合。所以效率肯定不高。
如果非要这么查询,数据量不大可以在应用端查询做到。如果很频繁的查询,可以把主要的子弹冗余到查询集合中,简单查询就可以做到了。