2014-04-18 3 views
0

나는 다음 한 데이터 구조 : 나는/업데이트 "area""_id" = 1업데이트 또는 MongoDB의 컬렉션에서 포함 된 문서를 대체

와 객체 컬렉션에서 문서에 대한 별도 "dimension" 대체 할

db.objects 
{ 
    "_id" : 1, 
    "name" : "object name", 
    "type" : "rectangle", 
    "area" : { 
     "position_x1" : 0, 
     "position_y1" : 0, 
     "position_x2" : 0, 
     "position_y2" : 0 
    }, 
    "dimension" : { 
     "width" : 0, 
     "height" : 0 
    } 
} 

[?] MongoDB C# 드라이버를 사용하여 어떻게 얻을 수 있는지 알려주십시오.

답변

2

이것은 매우 단순한 $set 연산자의 사용입니다. 그래서 본질적으로 업데이트 형식은 다음과 같습니다

db.objects.update(
    { "_id": 1 }, 
    { 
     "$set": { 
      "area": { /* all of your object properties */ }, 
      "dimension": { /* all of your object properties */ } 
     } 
    } 
) 

는 다른 방법으로 당신이 개별적으로 수행

db.objects.update(
    { "_id": 1 }, 
    { 
     "$set": { 
      "area.position_x1": 1, 
      "area.position_y1": 1, 
      "dimension.width": 1 
     } 
    } 
) 

당신이 실제 필요에 따라.

아니면 빌더와 C# 유형 코드로

:

var query = Query.EQ("_id",1); 

var update = Update.Set("area.position_x1", 1) 
    .Set("area.position_y1", 1) 
    .Set("dimension.width", 1); 

MongoCollection<Class>.update(query, update); 
+0

고마워 닐, 그 작업 : – theGeekster

+0

닐이 사용 MongoDB를 C#을 드라이버를 달성하는 방법을 알려 주시기 바랍니다 수 있습니까? – theGeekster

+0

@theGeekster 구현에 많은 차이가 없어야합니다. JSON 형식과 일치하는 BSON 문서를 작성하는 중입니다. 불행히도 그것은 공휴일에 나를 위해 여기 2시에 도착 했으므로 밤에 내 사인 오프가 될 것입니다. 한번 시도 해보니, 그렇게 어려운 것은 아니며, 그것은 학습 경험입니다. –