2013-06-10 1 views
0

온라인으로 파기 한 후 BSON이 익명 객체 배열을 지원하는지 알아낼 수 없었습니다. 내가 원하는 이유는 다음 스키마가있는 로깅 시스템을위한 것입니다.BSON이 익명 객체 배열을 지원합니까?

{ 
    ERROR_LOG: [ 
    { 
     message: "There was an error recording the file", 
     code: 1133 
    }, 
    { 
     message: "There was an error saving the file", 
     code: 1135 
    } 
    ], 
    FILE_LOG: [ 
    { 
     message: "File 1234.txt edited", 
     code: 5445 
    }, 
    { 
     message: "File transfer success", 
     code: 2332 
    } 
    ], 
    ... etc. 
} 

이 스키마 디자인이 효율적이지 않을 수 있습니다. 익명 객체가 지원되지 않으면 다른 스키마에 대한 제안을 공개합니다.

+0

상위 문서의 컨텍스트는 무엇입니까? 이것들이 실제로는 별개의 문서 여야합니다. – Sammaye

답변

1

이 있습니다.

문서에서 증분 이름이 '0', '1', ...으로 표시되지만 bson 라이브러리는 사용자를 숨 깁니다.

{ 
    array: [ 
     { 
      message: "There was an error recording the file", 
      code: 1133 
     }, 
     1234, 
     "etc." 
    ] 
} 

편집 :

여기에 문서에서 Cribbing : http://api.mongodb.org/c/current/tutorial.html#bson

난 당신처럼 뭔가를 할 수 있어야한다고 생각 배열의 요소가있는 경우

또한 유형을 혼합 할 수 있습니다 :

bson doc[1]; 

bson_init(doc); 
    bson_append_start_array(b, "ERROR_LOG"); 
     bson_append_start_object(doc, "0"); 
     bson_append_string(doc, "message", "There was an error recording the file"); 
     bson_append_int(doc, "code", 1133); 
     bson_append_finish_object(doc); 
     bson_append_start_object(doc, "1"); 
     bson_append_string(doc, "message", "There was an error saving the file"); 
     bson_append_int(doc, "code", 1135); 
     bson_append_finish_object(doc); 
    bson_append_finish_array(b); 
    bson_append_start_array(b, "FILE_LOG"); 
     bson_append_start_object(doc, "1"); 
     bson_append_string(doc, "message", "File 1234.txt edited"); 
     bson_append_int(doc, "code", 5445); 
     bson_append_finish_object(doc); 
     bson_append_start_object(doc, "1"); 
     bson_append_string(doc, "message", "File transfer success"); 
     bson_append_int(doc, "code", 2332); 
     bson_append_finish_object(doc); 
    bson_append_finish_array(b); 
bson_finish(doc); 

C 드라이버가 e는 거짓말 쟁이이고 배열 요소의 '인덱스'이름을 추적해야합니다.

+0

mongo-c-driver https://github.com/mongodb/mongo-c-driver 감사합니다 – user1876508

+0

답을 편집하여 예문을 포함 시켜서 examplocument ... 컴파일/작동하지 않을 수도 있지만 도움이 될 것이라고 생각합니다. –