Node.js操作MongoDB时如何按指定规则条件查询记录
MongoDB查询实现方案
你需要的逻辑可以直接用$or操作符组合两个匹配规则实现,不用写额外的复杂判断:
核心查询代码
假设你要查询的目标id是targetId,直接执行下面的查询即可:
// 替换为实际的集合名、目标id const targetId = '102' db.你的集合名.find({ $or: [ { rep_id: targetId }, { user_ids: targetId } ] })
规则说明
- 第一个匹配项就是你已经实现的
rep_id精准匹配逻辑 - 第二个匹配项是MongoDB对数组字段的默认匹配能力:只要
user_ids数组中包含目标id,就会自动匹配成功,不需要额外调用其他操作符
效果验证
对应你给出的示例数据:
- 查询id=101:仅第一条文档匹配
rep_id,返回第一条 - 查询id=102:两条文档的
user_ids都包含102,返回两条,完全符合你的预期
如果需要将rep_id匹配的结果排在返回列表的最前面,可以补充排序逻辑:
db.你的集合名.find({ $or: [ { rep_id: targetId }, { user_ids: targetId } ] }).sort({ $cond: { if: { $eq: ['$rep_id', targetId] }, then: 1, else: 2 } })
内容的提问来源于stack exchange,提问作者Chirag Jain
相关产品推荐
相关产品推荐

