2012-05-22 4 views
1

$ addToSet을 사용하여 기존 하위 문서를 업데이트 할 수 있습니까? 그렇다면 어떻게해야 "oid"와 "instance"가 같고 "value"필드가 업데이트되어야 하는지를 MongoDb에 알려줄 수 있습니다.

감사

{ $addToSet : { "data" : { $each : [ 
{"oid" : "1.3.6.1.4.1.111.3.10.9.9.88", 
     "instance" : "0", 
     "value" : "8888"} 

{"oid" : "1.3.6.1.4.1.111.3.10.9.9.77", 
     "instance" : "0", 
     "value" : "88888888"} 

] } } } 



"_id" : 483, 
    "data" : [{ 
     "oid" : "1.3.6.1.4.1.111.3.10.2.5.35.3", 
     "instance" : "0", 
     "value" : "0" 
    }, { 
     "oid" : "1.3.6.1.4.1.111.3.999.2.5.2", 
     "instance" : "0", 
     "value" : "RFCluster" 
    }, { 
     "oid" : "1.3.6.1.4.1.111.3.30.5.1.1", 
     "instance" : "0", 
     "value" : null 
    }]} 

답변

0

당신은 특정 하위 문서 만 업데이트 할 $에게 addToSet를 사용할 수 없습니다.

{ 
    "data_id": 483, 
    "oid" : "1.3.6.1.4.1.111.3.10.2.5.35.3", 
    "instance" : "0", 
    "value" : "0" 
} 

그럼 당신은 아주 쉽게 하나를 업데이트 upsert 같은 것을 사용할 수 있습니다 : 당신이 각 "데이터"요소가 자신의 문서가되도록 스키마를 변경하고 같은에 Data_ID로 ID를 이동해야한다고 생각 값 :

db.colname.update(
    { "data_id" 483, "oid" : "1.3.6.1.4.1.111.3.10.2.5.35.3", "instance" : "0" }, // criteria 
    { $set: { 'value' : "new value" } }, // update spec 
    true // this is to enable "upsert" 
); 
관련 문제