gpt4 book ai didi

java - MongoTemplate 更新在数组中为同一文档设置多个对象

转载 作者:行者123 更新时间:2023-12-01 18:31:25 34 4
gpt4 key购买 nike

我有一个端点,它接受文档 ID,以及我想要更新的嵌套数组中的 Employee 对象。这工作正常。我尝试修改端点以获取超过 1 名员工并让它一次更新所有员工,但我无法让它工作。我不确定我是否格式错误,或者这是不可能的。

详细来说,我的人口普查是一个已经存在的对象,如下所示,列表中有 10 名员工:

{
"id": <ID>
...
"employeeList": [
{
"employeeId": <Employee_ID>,
...
}
...
]
}

我想用一些新信息更新现有员工。所以我使用mongo文档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);

当我尝试更新它以一次完成所有这些操作时,这不起作用。我现在意识到我的方法实际上没有意义,所以我不会发布它(基本上围绕 for 循环中的 .addCriteria 和 update.set 来为提供的列表中的每个员工执行此操作)。收到如下错误:“由于 com.mongodb.BasicDocument 的限制,您无法添加第二个 'employeeList.employeeId' 标准”。

我可以做吗?是否有唯一的其他选择可以连续多次更新此文档?我认为这样做比调用端点 X 次更好。我使用的是 Mongo 3.6,以防影响任何答案。 TIA。

最佳答案

抱歉,您的帖子不清楚。您显示数组字段 EmployeeList - 您是否尝试向数组添加值?单个文档还是所有文档?

如果不向现有数组字段添加值 - 那么您是否正在寻求向所有文档添加新字段?

关于java - MongoTemplate 更新在数组中为同一文档设置多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60161539/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com