2012-05-14 2 views
0

Я в процессе миграции базы данных в MySQL в MongoDB. Однако я столкнулся с проблемой, когда MongoDB меняет тип документа на основе длины/значения данных string/integer, используемых для его инициализации. Есть ли способ предотвратить это? Я хочу, чтобы типы были одинаковыми в коллекции.Обеспечение полей одного и того же типа в документах в коллекции в mongodb

Я новичок в этой технологии и приношу свои извинения, если что-то пропустил. Я оглянулся и не мог найти решения. Любые указатели приветствуются.

спасибо,

Asha

+1

это поможет, если вы сообщите нам, как вы переносите эти данные. –

+0

О, я просто собираюсь дублировать данные на данный момент. Все коллекции будут иметь ту же структуру, что и их аналоги MySQL. По сути, я пишу некоторые программы Java и C++ для копирования данных. – Alice

+0

Что такое тип «документ» в MongoDB? Вы имеете в виду типы «element», то есть поля документа? (как описано в документах здесь: http://www.mongodb.org/display/DOCS/Data+Types+and+Conventions). Если это так, то с помощью драйвера вы сможете определить тип поля в запросы ... как @Asha предложили, поделитесь некоторым кодом, который выполняет копирование, и мы можем попытаться отладить :) –

ответ

0

Если вы пишете приложение миграции в C++, проверить класс BSONObjBuilder в "BSON/bsonobjbuilder.h". Если вы создаете свои отдельные документы BSON с помощью методов «добавления» BSONObjBuilder, строитель будет использовать статические типы полей для установки соответствующего типа BSON в выходном объекте.

Например:

int count = /*something from a mysql query*/; 
std::string name = /*something else from a mysql query*/; 
BSONObjBuilder builder; 
builder.append("count", count); 
builder.append("name", name); 
BSONObj result = builder.obj(); 
Смежные вопросы