Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / NoSQL, Big Data Новый топик    Ответить
 Embedded BsonDocument как извлеч в C#  [new]
Nawy
Member

Откуда:
Сообщений: 33
Создаю так:

var collection = db.GetCollection<BsonDocument>("User");

BsonDocument dUser = new BsonDocument {
     {"fame", "Ivan"},
     {"lname", "Ermolaev"},
     {"access", new BsonDocument {
                    {"create", "yes"}
                    {"delete", "no"}
                    {"change", "no"}
     }
}

collection.Insert(dUser);


Хочу получить поля access.create, access.delete и access.change, но если извлекать так:
foreach (BsonDocument item in user_collection.Find(query))
{
                    BsonElement objId = item.GetElement("_id");
                    BsonElement bfname = item.GetElement("fname");
                    BsonElement blname = item.GetElement("type");
                    BsonElement bcreate = item.GetElement("object.create"); // тут ошибка
                    BsonElement bdelete = item.GetElement("object.delete"); // и тут
                    BsonElement bchange = item.GetElement("object.change"); // и тут само собой
}


Получаю ошибку.

Если так:
foreach (BsonDocument item in user_collection.Find(query))
{
                    BsonElement objId = item.GetElement("_id");
                    BsonElement bfname = item.GetElement("fname");
                    BsonElement blname = item.GetElement("type");
                    BsonElement baccess = item.GetElement("object");
}


В Получаю что то вроде:
access={create:"yes", delete:"no", change:"no"}
7 ноя 13, 11:04    [15089469]     Ответить | Цитировать Сообщить модератору
 Re: Embedded BsonDocument как извлеч в C#  [new]
Nawy
Member

Откуда:
Сообщений: 33
Извеняюсь, разобрался.
Я сделал так:
foreach (BsonDocument item in user_collection.Find(query))
{
                    BsonElement objId = item.GetElement("_id");
                    BsonElement bfname = item.GetElement("fname");
                    BsonElement blname = item.GetElement("type");
                    //извлекаю как документ, а не как элемент
                    BsonDocument baccess = item.GetElement("object"); 
                    //а тут извлекаю уже элементы из документа
                    BsonElement bcreate = baccess.GetElement("create");
                    BsonElement bdelete = baccess.GetElement("delete");
                    BsonElement bchange = baccess.GetElement("change");
}
7 ноя 13, 11:07    [15089485]     Ответить | Цитировать Сообщить модератору
Все форумы / NoSQL, Big Data Ответить