我有一个包含嵌入文档的集合。
System
{
System_Info: "automated",
system_type:
{
system_id:1,
Tenant: [
{
Tenant_Id: 1,
Tenant_Info: "check",
Prop_Info: ...
},
{
Tenant_Id: 2,
Tenant_Info: "sucess",
Prop_Info: ...
} ]
}}
我需要在Tenant_Id中更新并将字段Tenant_Info设置为“failed”:2
我需要使用mongodb java来做。我知道在租户数组中插入另一个租户信息。但是在这里我需要使用java代码设置字段。
有人可以帮我这么做吗?
答案 0 :(得分:3)
这样的事情(未经测试):
db.coll.update(
{
"System.system_type.Tenant.Tenant_Id" : 2
},
{
$set : {
"System.system_type.Tenant.$.Tenant_Info" : "failed"
}
},
false,
true
);
对于所有顶级文档,它应该更新集合中第一个嵌套文档,Tenant_id
为2。如果您需要定位特定的顶级文档,则需要将其添加到update
调用中第一个对象参数的as字段中。
Java中的等价物:
BasicDBObject find = new BasicDBObject(
"System.system_type.Tenant.Tenant_Id", 2
);
BasicDBObject set = new BasicDBObject(
"$set",
new BasicDBObject("System.system_type.Tenant.$.Tenant_Info", "failed")
);
coll.update(find, set);