mongodb java插入嵌入式文档

时间:2012-09-04 22:20:38

标签: mongodb mongodb-java mongodb-query

我有一个包含嵌入文档的集合。

  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做到这一点?

3 个答案:

答案 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的例子:

Updating an array in MongoDB using Java driver

答案 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);

希望能帮助某人。