代码:
const items = await this.Products.find({
'_id': {
$in: [
...ids.map(id => new mongoose.Types.ObjectId(id.id))
]
}
}, {orders: 0}).exec()
数组ids
可以有重复的id。它只返回该项目一次。我希望它这样,它返回的项目,即使相同的id是重复多次。
如果一个例子是,Id是1,2,1。然后它应该返回id的对象,1,2,然后再次1。
我找不到任何可以尝试的东西。如果可以使用JavaScript完成,请随意放弃您的答案。
谢谢你想帮我!
我尝试使用$or操作符,以便它搜索单个id。没成功。
1条答案
按热度按时间3gtaxfhh1#
据我所知,它不能使用单个
find
或aggregate
查询来完成。在 MongoDB The Predictive Guide(2020) 中,它指出:Aggregation Pipeline:如果您熟悉Linux shell(如bash)中的管道,那么这是一个非常类似的想法。每个阶段都有它所做的特定工作。它期望特定形式的文档并产生特定的输出,输出本身就是一个文档流。在管道的最后,我们可以访问输出,与执行find查询的方式大致相同。也就是说,我们得到一个文件流回来。聚合流水线的单个级是数据处理单元。它一次接收一个输入文档流,一次处理一个文档,并一次生成一个输出文档流。
这表明每个文档都是一次一个地传递给
$in
标准,而不是相反。一旦文档符合标准,它就不会再次通过。