如何使用 spring 数据 mongorepository 方法仅获取选定的 mongo id?

问题描述

我正在尝试这个,它一次只对一个 ID 有效。我想添加 ID 列表。

public interface collectionRepository extends MongoRepository<collection,String> {
    
    List<collection> findByIds(List<UUID> id);
}

有人可以提出一些想法吗?提前感谢您的帮助!

解决方法

这适用于 POJO 类如下的情况:

public class User {

    private String id;
    private String firstName;
    private String lastName;
    // constructors (including default),get/set methods,etc.
}

并且,文档存储在集合 user 中,例如:

{ "_id" : ObjectId("604827bf8187ce707fb88681"),"firstName" : "John","lastName" : "Doe","_class" : "com.example.demo.User" }

具有获取具有提供的 id 列表的对象的方法的存储库:

public interface UserRepository extends MongoRepository<User,String> {

    @Aggregation(pipeline = { " { '$match': { '_id': { '$in':  ?0  } } }" } )
    List<User> findByIdsIn(List<String> ids);
}

对存储库方法的调用:

List<String> inputIds = Arrays.asList("604827d13de5773133374acc","604827617a40155f5111b9ff");
List<User> outputList = userRepository.findByIdsIn(inputIds);

outputList两个 文档与变量 inputIds 中的 ID 匹配。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...