2012-09-06 6 views
0

문서가 포함 된 모음이 있습니다. 내가 MongoDB의 자바를 사용하여 할 필요가 2Mongodb 임베디드 문서에서 필드 업데이트 및 설정

:

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에 "실패"하는 Tenant_Info를 설정해야합니다. 세입자 배열에 다른 세입자 정보를 삽입하는 것을 알고 있습니다. 하지만 여기에 자바 코드를 사용하여 필드를 설정해야합니다.

누구든지 도와 줄 수 있습니까?

+0

은'시스템을 읽을 의미 첫 번째 줄인가? db.coll.update ( { "System.system_type.Tenant.Tenant_Id": 2, "System_Info": "수동" } 최고 수준의 문서를 대상으로 추가 나중에 참조 할 수 있도록 – theon

답변

3

이 (테스트되지 않은) 같은 것에 대해 어떻게 :

db.coll.update(
    { 
     "System.system_type.Tenant.Tenant_Id" : 2 
    }, 
    { 
     $set : { 
      "System.system_type.Tenant.$.Tenant_Info" : "failed" 
     } 
    }, 
    false, 
    true 
); 

그것은 모든 최상위 문서 2의 Tenant_id와 컬렉션의 첫 번째 중첩 된 문서를 업데이트해야합니다. 특정 최상위 문서를 대상으로해야하는 경우 update 호출에서 첫 번째 개체 인수의 as 필드에 추가해야합니다.

그리고 자바에 해당하는 - 즉,이 필드는 문서 또는 시스템 컬렉션의 이름입니다 '(콜론) :

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); 
+0

, { 설정 $ { "System.system_type.Tenant. $ Tenant_Info": "failed" } }, false, true ); –