如何通过 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 循环保留的。
我正在传递一个 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 循环保留的。