MongoDB NoRM:使用Expando查询嵌套对象

时间:2010-07-26 22:33:26

标签: c# mongodb dynamic expando nosql

我看到了这个Q& A MongoDB Norm query nested objects,但它似乎只适用于强类型对象。

有没有办法在Expando对象(http://wiki.github.com/atheken/NoRM/expando)上查找或更新嵌套字段?基本上,我有一个简单的JSON CMS工具,允许开发人员在服务器上存储文档对象,然后将其提供给Flash客户端。我需要提供一个简单的服务,开发人员可以创建一个JSON对象,保存它,进行嵌套查询并更新这些对象。

由于数据结构未知,我认为这将是使用MongoDB的理想之地。不幸的是,.Net似乎更适合强类型数据结构。

有什么想法吗?谢谢!

2 个答案:

答案 0 :(得分:4)

正如安德鲁所说,由于文档类型在编译时未知,因此您无法获得对expando对象的情报支持。相反,您可以像这样查询

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

说明:

通过查询嵌入文档评论(comments.Author =“R”)来检索所有博客文档。

答案 1 :(得分:1)

你当然可以这样做,只需要GetCollection(“collectionName”)或GetCollection(“collectionName”),你就可以完成所有标准操作。使用Expando的缺点是你没有获得intellisense或LINQ,但在你的情况下,这没关系。