我正在处理一个mongo数据库,我的表看起来像这样。目前,为了更新所有内容,我使用保存方法传递一个bean,但如果我只需要更新数组中的一个元素,它就不会工作,因为它会覆盖整个记录。
{
"_id" : "21",
"idVlt" : "187",
"giochi" : [
{
"_id" : "22",
"installed" : "true",
"enable" : "true",
"urlimg" : "placeholder.png",
"categories" : [
],
"tags" : [
]
},
{
"_id" : "151",
"installed" : "true",
"enable" : "false",
"urlimg" : "placeholder.png",
"categories" : [
],
"tags" : [
]
},
{
"_id" : "197",
"installed" : "true",
"enable" : "false",
"urlimg" : "placeholder.png",
"categories" : [
],
"tags" : [
]
}
],
}
我想知道如何用_id:22更新数组的元素:“installed”:“true”--> false
并且能够向数组中插入新元素:
{
"_id" : "222",
"installed" : "true",
"enable" : "true",
"urlimg" : "placeholder.png",
"categories" : [
],
"tags" : [
]
}
使用db.AssociazioneGameVlt.find({ $and:[ {“giochi._id”:“77”}] })我已经x1c 0d1x
2条答案
按热度按时间pgky5nke1#
要使用_id更新giochi数组中的元素,请执行以下操作:“22”可以使用以下更新查询:
并添加一个新元素,您可以使用下面的
kninwzqo2#
谢谢,我在我的mongodb上试过了,还可以。。现在我把它翻译成这样的java代码
但我有这个错误:org.springframework.data.mongodb.UncategorizedMongoDbException:命令失败,错误为% 2(BadValue):'位置运算符未从查询中找到所需的匹配项。'在服务器上...
但是,如果我输入'0'而不是'$',它会修改数组的第一个元素,而不是得到正确的元素