mongodb lookup查询溢出问题

如题 连表查询时 数据量太大经常性溢出,请问有什么好的处理方法?本人刚用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
        }
    }
}

])

阅读 2.6k
1 个回答

mongo并不怎么推荐这种连表的方式。lookup一般只用来查询好的数据引入其他的集合一并返回。聚合的数据是一个流,你前面match加入搜索到100条数据,就相当于100元素依次流淌下去,每一个都需要经历整个聚合。所以效率肯定不高。

如果非要这么查询,数据量不大可以在应用端查询做到。如果很频繁的查询,可以把主要的子弹冗余到查询集合中,简单查询就可以做到了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题