Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Агрегация в MongoRepository  [new]
serega063
Member

Откуда:
Сообщений: 181
Всем привет!

Изучаю SpringData+MongoDB(чую зря)

Есть родитель

@NoArgsConstructor
@Builder(toBuilder = true)
@EqualsAndHashCode
@Data
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@org.springframework.data.mongodb.core.mapping.Document(collection = "contractor")
public class Contractor extends AbstractAuditingEntity implements Serializable  {

    @Id
    private String id;

    @NotNull
    @Indexed
    private String name;


    @NotNull
    private List<Project> projects;
  
}


и есть его child, я так понимаю он не должен быть @Document
@NoArgsConstructor
@Builder(toBuilder = true)
@EqualsAndHashCode
@Data
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public class Project extends AbstractAuditingEntity implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    private String id;

    @NotNull
    @Indexed
    private String name;



}


Вопрос!
Как мне получить все Project по всем Contractor

Заранее благодарен
6 май 20, 13:43    [22128132]     Ответить | Цитировать Сообщить модератору
 Re: Агрегация в MongoRepository  [new]
забыл ник
Member

Откуда:
Сообщений: 3292
А вы читали зачем вообще в проекте применяют MongoDB?

Групповые агрегации это соль и хлеб реляционок
6 май 20, 13:50    [22128136]     Ответить | Цитировать Сообщить модератору
 Re: Агрегация в MongoRepository  [new]
serega063
Member

Откуда:
Сообщений: 181
забыл ник,
Да читал, просто неужели такая простая операция для монги такая проблема?
6 май 20, 13:52    [22128137]     Ответить | Цитировать Сообщить модератору
 Re: Агрегация в MongoRepository  [new]
mayton
Member

Откуда: loopback
Сообщений: 46600
serega063, монго-документ изначально создают так чтобы агрегаты лежали внтури него. И на этом точка.
6 май 20, 13:53    [22128138]     Ответить | Цитировать Сообщить модератору
 Re: Агрегация в MongoRepository  [new]
serega063
Member

Откуда:
Сообщений: 181
Да и мне не нужна агрегация, мне нужно вытащить всех насоледников
6 май 20, 13:53    [22128139]     Ответить | Цитировать Сообщить модератору
 Re: Агрегация в MongoRepository  [new]
serega063
Member

Откуда:
Сообщений: 181
mayton
serega063, монго-документ изначально создают так чтобы агрегаты лежали внтури него. И на этом точка.


Я так и создал, только теперь не могу достать их
6 май 20, 13:54    [22128141]     Ответить | Цитировать Сообщить модератору
 Re: Агрегация в MongoRepository  [new]
mayton
Member

Откуда: loopback
Сообщений: 46600
У тебя так?

var fuckenContractor = {
               _id: ObjectId("???????????????????"),
               id : ???
               name: ???
               projects : [ ...... ]
            }
6 май 20, 14:02    [22128148]     Ответить | Цитировать Сообщить модератору
 Re: Агрегация в MongoRepository  [new]
serega063
Member

Откуда:
Сообщений: 181
mayton,

да
6 май 20, 14:05    [22128150]     Ответить | Цитировать Сообщить модератору
 Re: Агрегация в MongoRepository  [new]
забыл ник
Member

Откуда:
Сообщений: 3292
serega063

Как мне получить все Project по всем Contractor


serega063

Я так и создал, только теперь не могу достать их


Какая-то путаница в показаниях.
Смысл концепции noSQLв том чтобы моделировать данные в ненормализованном виде для ускорения некоторых операций. При этом предполагается что вы знаете что делаете и работаете в основном в рамках единой сущности, а не все-ко-всем.
Вы же не обвиняете молоток в том что он пилить не может? В рамках концепции описанной выше MongoDB очень даже хороший молоток, так что удивление непонятно
6 май 20, 14:22    [22128162]     Ответить | Цитировать Сообщить модератору
 Re: Агрегация в MongoRepository  [new]
mayton
Member

Откуда: loopback
Сообщений: 46600
Есть шикарные примеры SpringData + Mongo которые решают подобный вопрос легче.
Со ссылкой на https://www.devglan.com/spring-boot/spring-boot-mongodb-crud

Без написания эти уродливых ORM-моделей.

Только тебе надо будет напрячся и написать Query.

Типа

@Repository
public interface ProjectRepository extends MongoRepository {

    @Query(value = ".... fucken Mongo query here....")
    List<Project> allProjects();

}


Сообщение было отредактировано: 6 май 20, 14:27
6 май 20, 14:28    [22128170]     Ответить | Цитировать Сообщить модератору
 Re: Агрегация в MongoRepository  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 3472
serega063
Как мне получить все Project по всем Contractor

$unwind (aggregation) плюс $project (aggregation)
7 май 20, 04:27    [22128593]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить