猿问

通过Pymongo如何多表关联查询数据?

MongoDB数据库多表查询数据

之前在Robo 3T里通过 $lookup可以把2个表关联

相关代码

db.getCollection('users').find(
    {        "regDate": {"$gte":ISODate("2018-07-01T00:00:00Z"),"$lt":ISODate("2018-07-31T00:00:00Z")},        "rechargeDate": {"$gte":ISODate("2018-07-01T00:00:00Z"),"$lt":ISODate("2018-07-31T00:00:00Z")},
    }
)

db.users.aggregate([
    {        $lookup:
        {            "from":"recharge",            "localField":"nickname",            "foreignField":"real",            "as":"recharge_users"
        }

    }
])

users是用户表,recharge是充值表,用户表里没有充值金额(real)以及充值日期(rechargeDate),充值表里没有用户注册时间。

想查询哪些是充值用户和在时间范围内(注册1周、3周等)之内哪些充值过。


尚方宝剑之说
浏览 446回答 2
2回答

侃侃无极

最简单的办法是把用户注册信息冗余到充值记录里面,根本就不用$lookup了,性能可以提高很多。毕竟注册时间又不会变。

holdtom

这个要求本身就有些强人所难,非关系型数据库对多表查询这种复杂的查询方式都是乏善可陈的,也要尽量避免这种查询方式,建议与 ES 配合使用,或者将查询结果缓存。
随时随地看视频慕课网APP
我要回答