我的文档如下所示:
{
"data": {
"eventId": "20161029125458-df-d",
"name": "first",
"purpose": "test",
"location": "yokohama",
"dateArray": [],
"attendees": [
{
"attendeeId": "2016102973634-df",
"attendeeName": "lakshman",
"personalizedDateSelection": {}
},
{
"attendeeId": "2016102973634-tyyu",
"attendeeName": "diwaakar",
"personalizedDateSelection": {}
}
]
}
}
说,我需要使用 与会者ID:2016102973634-df 更新与会者JSON数组。我尝试了使用 更新和条件表达式的
多种方法,但均未成功。
这是我的尝试:
const params = {
TableName: "event",
Key: {
"eventId": eventId
},
UpdateExpression: "SET attendees[???] = ",
ConditionExpression: attendees.attendeeId = "2016102973634-df",
ExpressionAttributeValues: {
":attendee" : attendeeList
},
ReturnValues: "ALL_NEW"
};
dynamo.update(params, (err, data) => {
if (err) {
return reject(err);
}
console.log(data.Attributes);
});
找不到用于更新数组中的Json的任何资源。
@notionquest发表评论后:-尚未使用任何JsonMarshaller。最初,我将空数组添加到与会者字段,如下所示:
{
"eventId": "20161029125458-df-d",
"name": "first",
"purpose": "test",
"location": "yokohama",
"dateArray": [],
"attendees": []
}
然后,当新的 与会者 到来时,将其添加到 与会者 属性中,如下所示:
const attendee = {
"attendeeName": "user1",
"personalizedDateSelection": {"today": "free"}
}
const attendeeList = [attendee];
const eventId = "20161029125458-df-d";
const params = {
TableName: "event",
Key: {
"eventId": eventId
},
UpdateExpression: "SET attendees = list_append(attendees, :attendee)",
ExpressionAttributeValues: {
":attendee" : attendeeList
},
ReturnValues: "ALL_NEW"
};
dynamo.update(params, (err, data) => {
if (err) {
return reject(err);
}
console.log("in update dynamo");
console.log(data.Attributes);
});
如您在上面的代码片段中所见,最初,我 使用上述代码 添加了空 []数组 并添加了 新的参与者
。现在,如何更新数组中的特定JSON。如果您说不可能,那么我还能尝试什么?
我应该试试这个吗?
想知道是否有任何通行的途径?
我找不到查询和更新JSON数组的答案。我认为,不允许使用这些功能可能是AWS的获利动机。如果您需要查询除主键以外的特定ID,则需要创建一个具有成本效益的二级索引。该二级索引成本是dyn
amoDB表成本的额外费用。
因为我不想在二级索引上花额外的钱,所以我将dynamoDB模式更改为以下内容:
{
"data": {
"eventId": "20161029125458-df-d",
"name": "first",
"purpose": "test",
"location": "yokohama",
"dateArray": [],
"attendees": {
"2016102973634-df": {
"attendeeId": "2016102973634-df",
"attendeeName": "lakshman",
"personalizedDateSelection": {}
},
"2016102973777-df": {
"attendeeId": "2016102973777-df",
"attendeeName": "ffff",
"personalizedDateSelection": {}
}
}
}
}
将参加者从 [] 更改为 {} 。这使我可以灵活地查询特定的 与会者ID
并更改与此关联的整个JSON。即使这是多余的步骤,我也不想在业余爱好项目上花费额外的钱。
JSON文件:[ { “名称”:“约翰”,“城市”:“柏林”,“工作”:“教师”},{ “名称”:“马克”,“城市”:“奥斯陆”,“工作”:“医生”}] JSONParser parser=新的JSONParser();JSONArray a=(JSONArray)parser.parse(新的FileReader(“f:\file.json”));
这就是状态变量中的内容 我试图做的是调用一个函数来更新一个位置的期望值。例如,我使用的函数如下: 它不起作用。我知道我可以传递一个完全更新的数组,但我需要当前状态的其他值。
我有以下不便之处,我想只使用PostgreSQL更新JSON数组的键。我有以下json: 如果“othern”=X,我需要将“othern”更新为另一个数字 (X是我传递给查询的任何数字。例如,如果othern=5,则更新othern)。 这个JSON可能要大得多,所以我需要一些可以在JSON数组中迭代的东西,找到所有与X数匹配的“othern”,并替换为新的。非常感谢。 我尝试了Postgres
接口说明 操作场景产生的信息json,需要提交到服务端进行保存,以便下次查看场景的时候,可以正常访问到对该场景操作过得信息 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/scene/1.0.0/upload 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 id string form 是 场景ID
问题内容: 我想更新一个数组值,但我不确定要执行的正确方法,因此我尝试了以下方法,但没有为我工作。 我的模型,我模型中的子域 我的查询 谁能给我帮助。谢谢。 问题答案: 你不能同时使用 ,并 在相同的更新表达式作为嵌套的运营商。 使用更新运算符的正确语法如下: 在那里可以来自任何指定的更新列表运营商的位置。 要将一个新元素添加到数组中,只需一个 运算符即可,例如,您可以使用 update方法将修改
我有一个highlight模式为: