我正在使用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驱动程序的新手。任何帮助都是感激的!
您需要使用位置$
操作符和$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);