Spring 数据 mongo - 不同集合的问题

Spring Data mongo - issue with Distinct collection

Spring 数据 Mongo 不同不起作用。我正在关注两个文档。

/* 1 */
{
    "_id" : ObjectId("5ca746fd92bc0733a4a6633b"),
    "firstName" : "John",
    "lastName" : "Kerr",
    "emailId" : "john.kerr@gmail.com",
    "hobbies" : [ 
        {
            "interest" : "Indoor",
            "sports" : "Chess"
        }, 
        {
            "interest" : "Loveoor",
            "sports" : "Table Tennis"
        }
    ],
    "_class" : "com.example.Person"
}

/* 2 */
{
    "_id" : ObjectId("5ca746fd92bc0733a4a6633c"),
    "firstName" : "Neha",
    "lastName" : "Parate",
    "emailId" : "john.kerr@gmail.com",
    "hobbies" : [ 
        {
            "interest" : "Indoor",
            "sports" : "Chess"
        }, 
        {
            "interest" : "Loveoor",
            "sports" : "Table Tennis"
        }, 
        {
            "interest" : "Happydoor",
            "sports" : "Lawn Tennis"
        }
    ],
    "_class" : "com.example.Person"
}

当我db.person.distinct('hobbies')时,我很容易得到不同的记录。

[
    {
        "interest" : "Indoor",
        "sports" : "Chess"
    },
    {
        "interest" : "Loveoor",
        "sports" : "Table Tennis"
    },
    {
        "interest" : "Happydoor",
        "sports" : "Lawn Tennis"
    }
]

我想使用 Spring 数据 Mongo 或 Mongo 模板做同样的事情。但是 none 的工作方式。

@Query(value = "{}", fields = "{'hobbies' : 1}")
List<Person> findByDistinctHobbies();

根据文档 Spring 数据 Mongo 的最新版本:https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongo-template.query.distinct。您甚至可以查询嵌入文档以找出 distinct 个文档。

通过Mongo模板你可以实现如下:

List<Object> object = mongoTemplate.query(Person.class).distinct("hobbies").all();
     for (Object object2 : object) {
       Hobbies hobbies = (Hobbies) object2;
       System.out.println(hobbies);
     }
}