如何确保mongoose.find< Model>返回同样是重复的项

aemubtdh  于 2023-10-19  发布在  Go
关注(0)|答案(1)|浏览(108)

代码:

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。没成功。

3gtaxfhh

3gtaxfhh1#

据我所知,它不能使用单个findaggregate查询来完成。在 MongoDB The Predictive Guide(2020) 中,它指出:
Aggregation Pipeline:如果您熟悉Linux shell(如bash)中的管道,那么这是一个非常类似的想法。每个阶段都有它所做的特定工作。它期望特定形式的文档并产生特定的输出,输出本身就是一个文档流。在管道的最后,我们可以访问输出,与执行find查询的方式大致相同。也就是说,我们得到一个文件流回来。聚合流水线的单个级是数据处理单元。它一次接收一个输入文档流,一次处理一个文档,并一次生成一个输出文档流。
这表明每个文档都是一次一个地传递给$in标准,而不是相反。一旦文档符合标准,它就不会再次通过。

相关问题