You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用MongoDB获取'Scores'集合中两个指定id的排序文档?

MongoDB筛选指定ID文档并排序解决方案

没问题,我来帮你搞定这个需求!针对你的Scores集合,我们可以通过两步操作实现:先筛选出属于两个特定id的文档,再按需求排序。

1. 核心筛选逻辑

要匹配两个特定id的文档,MongoDB的$in操作符是最佳选择——它能精准匹配字段值在指定数组内的所有文档,完全适配你筛选两个目标ID的场景。

2. 排序规则设置

你可以根据业务需求选择排序维度,比如按score(分数)或_id(文档创建时间)排序,支持升序(用1表示)和降序(用-1表示)两种方向。

完整查询示例

假设你要筛选的两个id是Y19rvB489or4mvtxAAAC和pkCJGv23JobXVAXRAAAE,下面是不同排序需求的代码:

按分数升序(从小到大)

db.Scores.find(
  { id: { $in: ["Y19rvB489or4mvtxAAAC", "pkCJGv23JobXVAXRAAAE"] } }
).sort({ score: 1 })

按分数降序(从大到小)

db.Scores.find(
  { id: { $in: ["Y19rvB489or4mvtxAAAC", "pkCJGv23JobXVAXRAAAE"] } }
).sort({ score: -1 })

按文档创建时间降序(最新文档在前)

db.Scores.find(
  { id: { $in: ["Y19rvB489or4mvtxAAAC", "pkCJGv23JobXVAXRAAAE"] } }
).sort({ _id: -1 })

进阶:分组后排序

如果需要先按id分组,再对每个组内的文档按分数排序,可以使用聚合管道实现更精细的排序逻辑:

db.Scores.aggregate([
  // 第一步:筛选目标ID的文档
  { $match: { id: { $in: ["Y19rvB489or4mvtxAAAC", "pkCJGv23JobXVAXRAAAE"] } } },
  // 第二步:先按id升序聚合,再按score降序排列组内文档
  { $sort: { id: 1, score: -1 } }
])

这样就能让同一个id的文档集中展示,同时每个组内的分数从高到低排列。

内容的提问来源于stack exchange,提问作者roh_dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:16:19