如何通过 id 从集合中获取项目

How to get items from collection by ids

我正在传递一个 List<String>,它是请求中的项目 ID。我只需要获取 ids 在列表中的项目。基本上,我会向您发送产品 ID 列表,MongoDB 应该 return 和 List<Product>。我以为它会是内置的东西,但我无法实现它。

我尝试过聚合、求值等方法,但找不到方法。我认为它可以像这样简单:

override suspend fun getProductsById(input: List<String>): List<Product> {
    return productsCollection.aggregate<Product>(
        match(Product::_id in input)
    ).toList()
}

在我的理解中没有办法,但我一定是错的,因为我认为这就像一个简单的 API 应该允许的核心功能。 也许我可以做一个 2008 年的风格,循环 List<String>,然后一个一个地请求一个产品:

productsCollection.findOne(Product::_id eq itemId)

但是,我认为我不应该 运行 多次请求,这似乎是一个非常错误的想法。

适用于:

productCollection.find(Product::_id `in` ids)

in 关键字是为 for 循环保留的。