如何使用TypeOrm在MongoDB中通过ID数组批量查询文档?
解决方案
你的问题出在误用了ArrayContains操作符——它是用来查询数组类型字段是否包含指定元素/数组的,但你的myId是单个字符串类型,完全不匹配这个场景。
要实现单次查询匹配多个ID的需求,应该使用TypeORM提供的In操作符,它专门用来处理「字段值在指定列表中」的查询逻辑。
修正后的代码
import { In } from 'typeorm'; function (ids: string[]): Promise<User[]> { return this.repository.find({ where: { myId: In(ids) } }) }
为什么这个方案可行?
In(ids)会生成MongoDB的$in查询语句,一次性匹配所有myId属于ids数组的文档- 相比你用
Promise.all循环查询的方式,单次查询能大幅减少数据库请求次数,性能更优
内容的提问来源于stack exchange,提问作者Jeanluca Scaljeri
相关产品推荐
相关产品推荐

