MongoDB Постоянный массив смешанного типа - PullRequest
0 голосов
/ 17 июля 2011

У меня есть MongoDB (кстати, мне действительно нравится Mongo), и в одной из коллекций я пытаюсь сохранить массив объектов.Некоторые из этих объектов будут строковыми, некоторые bool, некоторые десятичными.Определение для массива (на самом деле это словарь):

        public Dictionary<string, object> Fields
    {
        get
        {
            if (_Fields == null)
                _Fields = new Dictionary<string, object>();
            return _Fields;
        }
        set
        {
            _Fields = value;
        }
    }

До того момента, когда мой код сохраняет данные в базе данных, типы переменных в массиве являются правильными.Когда я сохраняю и просматриваю данные через MongoHQ или в коде, массив возвращается со всеми строками.

Для этого я использую драйвер C #.

Есть ли способ заставитьпеременная к типу?Я что-то здесь упускаю?ТИА

1 Ответ

0 голосов
/ 18 июля 2011

То, что вы спрашиваете, разумно.Там нет специального синтаксиса, когда дело доходит до объектов - просто убедитесь, что ваши входные данные не являются строками.Однако в исходном коде, который у меня есть (может быть старым), я не вижу отображения для словаря в сериализаторе BSON.

Теперь в BerkeleyDB вам нужно было определить обратный вызов для каждого сохраненного вами типа, но MongoDBчерез BSON немного умнее, чем это.

Кстати: я использую драйвер https://github.com/atheken/NoRM для MongoDB.Что вы используете?

Идеи:

  • попробуйте коллекцию, список или массив вместо словаря

  • serialize/ десериализовать ваш словарь в / из байта []

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...