gpt4 book ai didi

spring-data-mongodb - 在 filterArray 中添加多个 $ 以更新嵌套子文档中的字段

转载 作者:行者123 更新时间:2023-12-05 07:20:46 25 4
gpt4 key购买 nike

示例 JSON:

{
"animalID":"1234"
"species" :
[
{
"speciesID" : "1"
"speciesName" : "Cannines",
"subspecies" :
[
{
"subspeciesID: "1",
"subspeciesName" : "Siberian Husky"
},
{
"subspeciesID: "2",
"subspeciesName" : "Labrador"
}
]
}
]
}

如果我在 mongodb 4 中运行下面的查询,我会得到想要的结果

db.animals.update(
{"animalID":"1234"},
{ $set:{"species.$[element].subspecies.$[subspecies].spieceName","German Shepard"}},
{ arrayFilters : [{"element.speciesID":"1"},{"subspecies.subspeciesID":"1"} ] }
)

我正在使用 spring boot 2.2.0.M4。我试图在 springboot 应用程序中实现相同但没有运气

Update update = new Update();

update.set(species+"$[element]"+subspecies+"$[subspecies]"+spicemenName,"German Shepard")
.filterArray(Criteria.where("element.spiciesID").is("1")
.andOperator(Criteria.wher("subspicies.subspeciesID").is("1")))

mongoTemplate.findAndModify(query, update, new FindAndModifyOptions().returnNew(true), Animal.class);

我不确定如何在 filterArray 中传递两个标识符。

如果我通过使用 andOpertor,我会得到一个错误:

Error parsing array filter :: caused by :: Expected a single top-level field name, found 'element' and 'subspecies'' on server localhost:27017

任何人都可以让我知道我在这里缺少什么。

最佳答案

您可以链接多个 filterArray() 语句

Update update = new Update();
update.set(species+"$[element]"+subspecies+"$[subspecies]"+spicemenName,"German Shepard")
.filterArray(Criteria.where("element.spiciesID").is("1"))
.filterArray(Criteria.where("subspicies.subspeciesID").is("1"))

mongoTemplate.findAndModify(query, update, new FindAndModifyOptions().returnNew(true), Animal.class);

关于spring-data-mongodb - 在 filterArray 中添加多个 $<identifier> 以更新嵌套子文档中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57345850/

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