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バージョン>=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 に答える