У меня есть конечная точка, которая принимает идентификатор документа, и объект Employee во вложенном массиве, который я хотел бы обновить. Это работает нормально. Я попытался изменить конечную точку, чтобы она заняла более 1 сотрудника, и он обновил их все сразу, но не могу заставить ее работать. Я не уверен, что у меня неправильный формат или это невозможно.
Для уточнения, моя перепись - это уже существующий объект, в котором 10 сотрудников в списке:
{
"id": <ID>
...
"employeeList": [
{
"employeeId": <Employee_ID>,
...
}
...
]
}
Я хочу обновить существующего сотрудника новой информацией. Поэтому я использую mon go Document ID, чтобы найти документ, а затем нахожу правильного Employee в списке по его EmployeeID. У меня это работает с чем-то вроде этого для одного обновления сотрудника:
Query query = new Query().addCriteria(new Criteria("id").is(id))
.addCriteria(new Criteria("employeeList.employeeId").is(employee.getEmployeeId());
update.set("employeeList.$", employee);
UpdateResult result = mongoTemplate.updateFirst(query, update, Census.class);
Когда я пытался обновить его, чтобы сделать их все сразу, это не сработало. Теперь я понимаю, что мой подход на самом деле не имеет смысла, поэтому я не буду публиковать его (в основном окружая .addCriteria и update.set в для l oop, чтобы сделать это для каждого сотрудника в представленном списке). Возникла ошибка вроде: «Из-за ограничений com.mongodb.BasicDocument вы не можете добавить второй критерий employeeList.employeeId».
Можно ли это сделать? Является ли единственный другой вариант, чтобы просто обновить этот документ несколько раз подряд? Я думаю, что лучше сделать это, чем вызывать конечную точку X раз. Я в понедельник go 3,6 в случае, если это влияет на любые ответы. ТИА.