Монго запрос в Spring Boot - PullRequest
       2

Монго запрос в Spring Boot

0 голосов
/ 05 сентября 2018

Пожалуйста, помогите мне получить нижеприведенный сложный запрос монго, используя mongoTemplate весной

Я хотел бы получить коллекцию, только если "NAME": "UserID1"?

{
    "_id": "12345",
    "A": [{
        "B1": {
            "NAME": "test1",
            "C1": [{
                "D1": [{
                        "NAME": "UserID1"
                    },
                    {
                        "NAME": "UserID2"
                    }
                ]
            }]
        }
    }, 
    {
        "B2": {
            "NAME": "test2",
            "C2": [{
                "D2": [{
                        "NAME": "UserID3"
                    },
                    {
                        "NAME": "UserID4"
                    }
                ]
            }]
        }
    }]
}

Спасибо.

1 Ответ

0 голосов
/ 20 июля 2019

например, если предположить, что ваш класс такой:

@Document
public class FirstClass{
  @Id
  String id;
  List<SecondClass> A;

  public class SecondClass{
     string Name;
     List<ThirdClass> C1;

  }
}

в mongoTemplate:

...
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
...

@Component
    public ServiceClass{
           private final MongoTemplate mongoTemplate;

           ServiceClass(MongoTemplate mongoTemplate){
                this.mongoTemplate = mongoTemplate;
           }

           public List<FirstClass> getResult(String searchInput){
                final Criteria criteria =
                    Criteria.where("A.name").is(searchInput);
                List<FirstClass> result = mongoTemplate.find(new Query(criteria),FirstClass.class);
           }
    }

и вы можете использовать запрос данных пружинного монго, например:

public interface FirstClassRepository extends MongoRepository<FirstClass, String> {
        List<FirstClass> findByA_Name(String name);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...