0

ドキュメントが埋め込まれたコレクションがあります。

 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: 2 でフィールド Tenant_Info を更新して「失敗」に設定する必要があります。

私はmongodb Javaを使用してそれを行う必要があります。テナント配列に別のテナント情報を挿入することはわかっています。しかし、ここでは Java コードを使用してフィールドを設定する必要があります。

誰でもこれを行うのを手伝ってもらえますか?

4

1 に答える 1

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);
于 2012-09-06T20:09:36.933 に答える