MongoRepository仅获得特定字段作为结果

时间:2019-05-02 09:15:24

标签: mongodb spring-data-jpa spring-data-mongodb mongorepository

我正在Spring Web中使用Mongodb。 并使用MongoRepository进行CRUD

我有: 集合:用户

后来,我不得不创建一个组。 因为我不应该也不能将用户嵌入到组中。我创建新集合作为SQL名称:GroupUser。在这里,我使用:

    @Field("groupId")
    private String groupId;
    @DBRef
    private User user;

这将有助于查询组中的列表用户(查询数据并自动获取用户的内容)

但是我想获取列表用户ID。通常,在SQL中,我们可以这样做:

select user.id from GroupUser where groupId = ?1

所以我发现我们可以减少并仅获得选择字段,例如

    @Query(value = "{ 'groupId' :  ?0 }", fields = "{ '_id': 0, 'user.$id':1 }")
    List<String> findAllUserIdByGroupId(String groupId);

但结果是JSON之类的

{Object :{ User: {$id: "ObjectID in Hexa"} } }

〜>因此,如果我想获取ObjectId的列表,则必须制作一个映射或for循环将其转换。 〜>一点都不好

所以我尝试找出更多解决方案:

这个question给了我一个创建新退货模型的想法。

db.getCollection('groupuser').aggregate([ { $project : { _id:0 , "newId" : "$user" }} ])

此newID可以链接到$user,但是如果我将其更改为获取UserId $user.$id 〜>这将导致错误。

因此,仅在mongo命令中,我无法获得SQL想要的功能。

请为此提供其他解决方案。

0 个答案:

没有答案