2013-06-10 3 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." 
    ] 
} 

Edit:

списывание из документации здесь: 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 лжец из меня, и вам нужно отслеживать имена «index» для элементов массива.

+0

mongo-c-driver https://github.com/mongodb/mongo-c-driver спасибо – user1876508

+0

отредактировал ответ, чтобы включить пример для создания вашего exampledocument ... Могу не компилироваться/работать, но я думаю, что это должно помочь. –

 Смежные вопросы

  • Нет связанных вопросов^_^