- 39
- 0
查询列表(20万数据),先通过条件一查询,如果查询出来的数据大于一,则添加条件二(查询条件为条件一加上条件二),如果结果大于一则继续添加条件,如果等于一则终止,如果结果为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函数中添加了两个新的字段price和discount。price字段是每个订单的总价,discount字段是每个订单的折扣金额。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
