我有一个包含嵌入文档的集合。
System
{
System_Info: ...,
Tenant: [
{
Tenant_Id: ...,
Tenant_Info: ...,
Prop_Info: ...
},
{
Tenant_Id: ...,
Tenant_Info: ...,
Prop_Info: ...
} ]
}
如果我需要插入此类其他租户信息
Tenant { Tenant_Id:2,Tenant_Info:"check",prop_info:"client"}.
mongodb查询是否插入了嵌入文档?以及如何使用java做到这一点?
答案 0 :(得分:9)
使用以下代码插入数组:
BasicDBObject query = new BasicDBObject();
query.put( "System_Info", "...." );
BasicDBObject tenant = new BasicDBObject();
tenant.put("Tenant_Id", 2);
tenant.put("Tenant_Info", "check");
tenant.put("Prop_Info", "client");
BasicDBObject update = new BasicDBObject();
update.put("$push", new BasicDBObject("Tenant",tenant));
coll.update(query, update,true,true);
答案 1 :(得分:3)
您是否尝试将另一个租户添加到阵列中?如果是这样,您可能希望创建一个代表租户的DBObject,然后将其推送到数组上。
在Java中,嵌入式文档由DBObjects表示(其中BasicDBObject是子类)。以下是从文档中插入嵌入文档的示例:
http://www.mongodb.org/display/DOCS/Java+Tutorial#JavaTutorial-InsertingaDocument
此外,这是一个在Java中使用$ push的例子:
答案 2 :(得分:0)
...这是使用mongo驱动程序版本> = 3.1的方法(我的是3.2.2):
Document tenant = new Document("Tenant_Id", 2)
.append("Tenant_Info", "check")
.append("Prop_Info", "client");
Bson filter = Filters.eq( "System_Info", "...." ); //get the parent-document
Bson setUpdate = Updates.push("Tenant", tenant);
coll.updateOne(filter, setUpdate);
希望能帮助某人。