MongoDB NoRM: запрос вложенных объектов с помощью Expando - PullRequest
2 голосов
/ 27 июля 2010

Я видел это вопросы и ответы Запрос MongoDB Norm для вложенных объектов , но, похоже, он применяется только к строго типизированным объектам.

Есть ли способ найти или обновить вложенное поледля объекта Expando (http://wiki.github.com/atheken/NoRM/expando)? По сути, у меня есть простой инструмент JSON CMS, который позволяет разработчикам хранить объекты документов на сервере, которые затем будут обслуживаться клиентами Flash. Мне потребуется предоставить простой сервис, где разработчик можетсоздайте объект JSON, сохраните его, сделайте вложенные запросы, а также обновите эти объекты.

Поскольку структура данных неизвестна, я подумал, что это идеальное место для использования MongoDB. К сожалению, .Net выглядит лучшеподходит для строго типизированных структур данных.

Есть идеи? Спасибо!

Ответы [ 2 ]

4 голосов
/ 14 сентября 2010

Как сказал Эндрю, вы не получаете интеллектуальную поддержку для объектов расширения, так как тип документа неизвестен во время компиляции.Вместо этого вы можете запросить его следующим образом:

            var query = new Expando();
            query["comments.Author"] = Q.Equals("R");
            Mongo mongo = new Mongo(connection);
            var reer = mongo.GetCollection<Expando>("Blog").Find(query).ToList();

Объяснение:

При этом извлекаются все документы Blog путем запроса встроенного документа comments (comments.Author = "R").

1 голос
/ 14 сентября 2010

Вы, безусловно, можете сделать это, просто GetCollection ("collectionName") или GetCollection ("collectionName"), и вы можете выполнять все стандартные операции.Недостатком использования Expando является то, что вы не получаете intellisense или LINQ, но в вашем случае это нормально.

...