Как удалить элемент из массива элементов в MongoDB с помощью Spring Data

Я хочу удалить элемент из массива элементов, если какое-то условие выполняется. Например: у меня есть 1000 записей, каждая из которых имеет массив caseDetails, а внутри у меня много элементов. Я хочу передать caseId и удалить все caseDetails элементы, соответствующие этому идентификатору. Ниже приведены данные MongoDB для объяснения, скажем, у меня есть два данных, например, теперь я хочу, чтобы если caseId = 24894006 (который я прошел) вышел (не писать новый запрос) в БД, тогда он должен быть удален.

1) Первые данные БД

{
    "_id": "60f8fcbe8f67d30784c45561",
    "messageType": "e",
    "sendDate": "2021-07-22T05:06:04.023Z",
    "assigneeId": 600003,
    "customerId": 58004,
    "subject": "Email Test 1[#24894006]",
    "mailAnswered": false,
    "hasAttachments": false,
    "caseDetails": [
        {
            "caseId": 24894006,
            "employeeId": 600003
        },
        {
            "caseId": 34894006,
            "employeeId": 600003
        },
        {
            "caseId": 44894006,
            "employeeId": 600003
        }

    ]
},  
{
    "_id": "60f8fcbe8f67d30784c45561",
    "messageType": "e",
    "sendDate": "2021-07-22T05:06:04.023Z",
    "assigneeId": 600003,
    "customerId": 58004,
    "subject": "Email Test 1[#24894006]",
    "mailAnswered": false,
    "hasAttachments": false,
    "caseDetails": [
        {
            "caseId": 24894006,
            "employeeId": 600003
        },
        {
            "caseId": 34894006,
            "employeeId": 600003
        },
        {
            "caseId": 44894006,
            "employeeId": 600003
        }
    ]
}

Таким образом, в приведенном выше примере вывод в БД должен выглядеть так:

{
    "_id": "60f8fcbe8f67d30784c45561",
    "messageType": "e",
    "sendDate": "2021-07-22T05:06:04.023Z",
    "assigneeId": 600003,
    "customerId": 58004,
    "subject": "Email Test 1[#24894006]",
    "mailAnswered": false,
    "hasAttachments": false,
    "caseDetails": [
        {
            "caseId": 34894006,
            "employeeId": 600003
        },
        {
            "caseId": 44894006,
            "employeeId": 600003
        }

    ]
},  
{
    "_id": "80f8fcbe8f67d30784c45561",
    "messageType": "e",
    "sendDate": "2021-07-22T05:06:04.023Z",
    "assigneeId": 600003,
    "customerId": 58004,
    "subject": "Email Test 1[#24894006]",
    "mailAnswered": false,
    "hasAttachments": false,
    "caseDetails": [
        {
            "caseId": 54894006,
            "employeeId": 600003
        },
        {
            "caseId": 64894006,
            "employeeId": 600003
        }
    ]
}

Из caseDetails caseId = 24894006 (весь объект)

Я также закодировал:

@Override
  public List<Email> unlinkMessageCaseDetailsByCaseId(MessageFilter messageFilter) {
    Criteria finalCriteria = handleCriteria(messageFilter);
    Query query = query(finalCriteria);
    // Update update = new Update().pull("caseDetails", Collections.singletonMap("caseId", messageFilter.getCaseId()));
    List<Email> uMono = mongoTemplate.find(query, Email.class).collectList().block();
    return uMono;
  }

Это репозиторий, который я использую

@MongoRepository
public interface EmailRepository 
         extends ReactiveCrudRepository<Email, String>,
                 MessageRepositoryCustom {

}

person Shrey Soni    schedule 22.07.2021    source источник
comment
Ознакомьтесь с этим: stackoverflow.com/questions/30530723/   -  person Onur Baştürk    schedule 22.07.2021
comment
Это не имеет ничего общего с JPA.   -  person Jens Schauder    schedule 23.07.2021