【发布时间】:2020-02-11 03:22:06
【问题描述】:
我有一个端点,它接受一个文档 ID,以及一个嵌套数组中的 Employee 对象,我想更新它。这工作正常。我试图修改端点以接受超过 1 名员工并让它一次更新它们,但我无法让它工作。不知道是不是格式不对,还是不行。
详细来说,我的 Census 是一个已经存在的对象,如下所示,列表中有 10 名员工:
{
"id": <ID>
...
"employeeList": [
{
"employeeId": <Employee_ID>,
...
}
...
]
}
我想用一些新信息更新现有员工。所以我使用mongo Document ID 来查找文档,然后通过它的EmployeeID 在列表中找到正确的Employee。对于单个员工更新,我可以使用类似的方法:
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 在 for 循环中为提供的列表中的每个 Employee 执行此操作)。收到如下错误:“由于 com.mongodb.BasicDocument 的限制,您无法添加第二个 'employeeList.employeeId' 标准”。
我可以吗?是否是连续多次更新此文档的唯一其他选择?我认为这样做比调用端点 X 次更好。我在 Mongo 3.6 上,以防影响任何答案。 TIA。
【问题讨论】:
标签: java mongodb mongotemplate