4

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

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

4

3 回答 3

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);
于 2012-09-05T07:18:16.633 回答
3

您是否尝试将另一个租户添加到阵列中?如果是这样,您需要创建一个表示租户的 DBObject,然后将其 $push 到数组上。

在 Java 中,嵌入式文档由 DBObjects 表示(BasicDBObject 是其子类)。这是从文档中插入嵌入式文档的示例:

http://www.mongodb.org/display/DOCS/Java+Tutorial#JavaTutorial-InsertingaDocument

此外,这是一个在 Java 中使用 $push 的示例:

使用 Java 驱动程序更新 MongoDB 中的数组

于 2012-09-04T22:55:37.530 回答
0

...这是使用 mongo-driver version >= 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);

希望对某人有所帮助。

于 2018-08-26T08:28:54.817 回答