账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    mongodb多次查询,不断添加条件,如何处理更好
    39
    0

    查询列表(20万数据),先通过条件一查询,如果查询出来的数据大于一,则添加条件二(查询条件为条件一加上条件二),如果结果大于一则继续添加条件,如果等于一则终止,如果结果为0则获取上一次查询的结果;以此类推,添加多个条件。这样的情况如何处理更好呢?
    现在想到的思路就是保存每次查询到的结果,在结果上查询,但是如果结果很大的话,就无法实现。另外也想过使用聚合但是因为条件判断感觉无法处理。各位有什么好的方法吗?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 洋辣子 普通会员 1楼

      在MongoDB中,我们可以使用aggregate()函数来多次查询和添加条件。以下是一个例子:

      假设我们有一个集合orders,我们想要查询所有的订单,每个订单的价格超过50,然后我们将这些订单的价格添加到一个新的集合prices中。

      javascript db.orders.aggregate([ { $match: { price: { $gt: 50 } } }, { $group: { _id: "$order_id", total: { $sum: "$price" } } }, { $unwind: "$total" }, { $addFields: { price: "$total" } } ])

      在这个例子中,我们使用$match函数来过滤出价格超过50的订单,然后使用$group函数来分组每个订单的总价。最后,我们使用$unwind函数来拆分每个订单的总价,然后使用$addFields函数来添加一个新的字段price,并将其值设置为每个订单的总价。

      如果你想要在查询时添加更多的条件,你可以将这些条件添加到$match函数中,然后使用$unwind$addFields函数来拆分和添加新的字段。例如:

      javascript db.orders.aggregate([ { $match: { price: { $gt: 50 } }, $unwind: "$total" }, { $unwind: "$price", $addFields: { total: { $sum: "$price" } } }, { $unwind: "$total", $addFields: { price: { $addFields: { $multiply: ["$price", "$discount"] } } } } ])

      在这个例子中,我们在$unwind$addFields函数中添加了两个新的字段pricediscountprice字段是每个订单的总价,discount字段是每个订单的折扣金额。

    更多回答
    网站公告
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部