我正在使用Java驱动程序创建一个MongoDB统计系统,我想知道是否有可能(以及如何)更改嵌套在许多对象中的键的值。以下是我的数据库的格式:
{
location : “chicago”,
stats : [
{
"employee" : "rob",
"stat1" : 1,
"stat2" : 3,
"stat3" : 2
},
{
"employee" : "krista",
"stat1" : 1,
"stat2" : 3,
"stat3" : 2
}
]
}
那么,例如,我怎么能将Rob的“stat2”改为另一个值?我是JSON和MongoDB Java驱动程序的新手。任何帮助表示赞赏!
答案 0 :(得分:2)
您需要使用positional $
运算符和$set来更新所需内容。
db.collection.update(
{ _id: <docId>, "stats.employee": "rob" },
{ "$set": { "stats.$.stat2": <value> } }
)
因此,您匹配您的文档和数组所需的元素。更新端使用该数组索引来了解要更新的元素。 $set运算符仅更新指定的字段。
在Java中,使用BasicDBObject构建。
BasicDBObject query = new BasicDBObject("_id", id);
query.append( new BasicDBObject("stats.employee", "rob") );
BasicDBObject update = new BasicDBObject("$set",
new BasicDBObject("stats.$.stat2", value));
collection.update(query,update);