Spring Data Mongo-Distinct集合的问题 [英] Spring Data mongo - issue with Distinct collection

查看:427
本文介绍了Spring Data Mongo-Distinct集合的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Spring Data Mongo与众不同不起作用.我正在看两个文件.

Spring Data Mongo distinct doesn't works. 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"
}

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

When I do db.person.distinct('hobbies'), I get the distinct records easily.

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

我想使用Spring Data Mongo或MongoTemplate做同样的事情.但是,一切运作方式都没有.

The same I wants to do using Spring Data Mongo or MongoTemplate. But none of the ways things are working.

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

推荐答案

在最新版本的 Spring Data Mongo 中,根据文档:

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. You can even query to the embedded document to find out the distinct documents.

通过MongoTemplate,您可以实现以下目标:

Through MongoTemplate you can achieve like below:

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

这篇关于Spring Data Mongo-Distinct集合的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆