简体   繁体   English

Spring Data Mongo-Distinct集合的问题

[英]Spring Data mongo - issue with Distinct collection

Spring Data Mongo distinct doesn't works. Spring Data Mongo与众不同不起作用。 I've following two documents. 我关注了两个文件。

/* 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"
}

When I do db.person.distinct('hobbies') , I get the distinct records easily. 当我执行db.person.distinct('hobbies') ,我很容易获得不同的记录。

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

The same I wants to do using Spring Data Mongo or MongoTemplate. 我想使用Spring Data Mongo或MongoTemplate做同样的事情。 But none of the ways things are working. 但是,一切都没有起作用的方式。

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

In the latest version of Spring Data Mongo as per docs: https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongo-template.query.distinct . 在最新版本的Spring Data Mongo中 ,根据docs: https : //docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongo-template.query.distinct You can even query to the embedded document to find out the distinct documents. 您甚至可以查询嵌入的文档以找出distinct文档。

Through MongoTemplate you can achieve like below: 通过MongoTemplate,您可以实现如下所示:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM