【发布时间】:2016-12-06 15:11:13
【问题描述】:
Datastore ds = datastore;
Query<Document> query = ds.createQuery(Document.class).field("_id").equal(documentId);
UpdateOperations<Document> ops = ds.createUpdateOperations(Document.class).set("draft.languages", draft);
ds.update(query, ops);
这是我要更改的课程
@Embedded("language")
private String language;
private String body;
json 之前:
"languages" : [
{
"language" : "en",
"body" : "bla blaaaaaaaaaaaa ttttttt"
},
{
"language" : "ru",
"body" : "faksdfsdghfhshsssssssssh"
}
]
json 之后:
"languages" : [
{
"language" : "en",
"body" : "bla blaaaaaaaaaaaa ttttttt"
},
{
"language" : "ru",
"body" : "faksdfsdghfhshsssssssssh"
},
{
"language" : "en",
"body" : "blablablablalblalaakfslkdfjkldf"
}
]
草稿是语言列表
如果该语言存在于草稿段中,我正在尝试进行更新,或者插入新的,问题是正文不同,因此它总是插入新的而不是替换旧的。 我想我错过了一些东西(我使用了 $addtoset 并且它添加了列表而不是替换)
现在我正在使用 set 并替换整个列表,有更好的选择吗?
感谢您的帮助!
我正在尝试做的示例
json 之前
插入
"languages" : [
{
"language" : "en",
"body" : "bla blaaaaaaaaaaaa"
},
{
"language" : "it",
"body" : "faksdfsdghfhshsssssssssh"
}
]
我希望结果是:
"languages" : [
{
"language" : "en",
"body" : "bla blaaaaaaaaaaaa"
},
{
"language" : "ru",
"body" : "faksdfsdghfhshsssssssssh"
},
{
"language" : "it",
"body" : "faksdfsdghfhshsssssssssh"
}
]
【问题讨论】:
-
这对我的问题没有帮助 - 它设置了整个列表,而不是添加