c#开发Mongo笔记第七篇

开发到这里遇到了一些问题,哪到这里想请教一下大家

今天我完成的是菜单功能,

 public   class Menu
    {
        public ObjectId _id { get; set; }

        public int MenuId { get; set; }
        public string Name { get; set; }

        public int ParentId { get; set; }
        public string  Url { get; set; }

        public string Icon { get; set; }

        public int OrderNo { get; set; }

        public string Descr { get; set; }

    }

首先是按照最常规的方式采用内键的方式完成的菜单。当我完成的时候突然想到既然Monogo结构这么松散,我为什么不把子菜单当成一个字段存进去呢,于是增加了一个字段

  public List<Menu> Child = new List<Menu>();

存储到数据库的结构式这样的,

本以为一切顺利,但是却发现连最基本的插入子菜单的功能都实现不了了。

我添加菜单时通常都是先添加父级菜单,然后再给父菜单添加子菜单,那么就相当于去修改这么文档的child属性,

然后我用修改方法去写

                   parent.Child.Add(menu);
                    var queryid = Query.And(Query.EQ("MenuId", pid));

                    var update = Update.Set("Child",menu);

                   DAL.DALMenu.Update(queryid, update);

那么问题来了,update.set()这个函数的第二个参数是bsonvalue类型的,我无法把一个集合当成参数放进去,这个更新方法还必须指定一个要修改的字段,然后我就突然不知道怎么修改了。

然后我就开始百度(自从谷歌突出中国以后我就开始百度了),结果能找到的都是基本的增删改查,哎,相当无助啊,

希望有知道怎么做的能不吝赐教啊,万分感激啊

时间: 2024-07-29 21:04:39

c#开发Mongo笔记第七篇的相关文章

c#开发Mongo笔记第八篇

到今天为止,Mongo开发的权限管理系统功能就做完了,剩下的就是完善构架,优化结构,只是现在c#操作Mongo的各种操作基本都掌握了 说到权限管理系统,其实再简单不过了,在关系型数据的是时代,我们通常建一个菜单表,菜单用内建来管理子菜单,然后再建一个角色表(或用户表),然后再建一个角色和菜单的对应关系表,存上菜单id和角色id的对应关系.当然了,方法很多,我只是 举了一个相对比较常见的设计方式. 用上Mongo之后我本来照搬以前的设计思路,完成了权限管理,完成之后突然觉得这样不太好吧.比较Mon

c#开发Mongo笔记第六篇

之前写的五篇比较得到了大家的积极反馈,也有个别高手对我写我写出的代码进行了指教. 其中提到的我写的查询方法性能有问题,我想了想,如果mongo不是延时加载的话,那我的查询就真的有问题了,就成了查询出来所有的数据再进行二次筛选了. 可能这也是之前总是使用entity framework框架导致的习惯性这么写了吧.今天赶紧进行了一下代码,现在贴出来一下,省的之前的错误写法误导了大家,再此也感谢大家对我的批评指正 public static User GetById(ObjectId id) { Mo

c#开发Mongo笔记第四篇

今天是个伟大的日子,不得不说小苹果的歌词真是深入人心啊. 不过今天伟大并不是因为我种下一颗种子,而是我从今天不再写demo,而是进入项目的正式开发当中,毕竟项目时间有限(想必各位码农也都深有体会吧),边开发边探索吧. 既然是刚刚开始,就先搭了一下系统框架,然后,做了一个登陆功能,和一个登陆日志功能 public class Log { public ObjectId Id { get; set; } public string Abstract { get; set; } public stri

c#开发Mongo笔记第三篇

今天主要测试了一下查询功能了,当然了主要还是为了让查询可以和我们平时使用的实体对象关联起来,并且 那些BsonDocument和Collection我们操作起来不是太方便的 还是首先定义了一个用户类,注意这个类需要和mongo中的对象的字段完全匹配,包括大小写,不然查询的时候会出现字段无法匹配的错误 public class User { public ObjectId Id { get; set; } public string Name { get; set; } public int Ag

c#开发Mongo笔记第五篇

现在增删查改算是都完成了,但是查询算是有点不完美的,相信现在用juqeryeasyui这一类的插件的人应该也不少吧,这样的话前台展示需要JSON格式的数据, 好在mogno驱动提供toJson()的函数,但是却无法在前台显示,不知道是不是objectid导致的,下面是我通过firebug看到的请求数据. {"total":"2","rows":[{ "_id" : ObjectId("545c395937d9dc8a

斯坦福大学IOS开发课程笔记(第七课第二部分)

转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/32163347 作者:小马 本篇是demo演示,程序其实就是上节课的心理学家那个demo, 不过在这个demo的基础上,把它作成一个通用版,可以自动识别当前运行的设备是iphone还是ipad,然后有不同的显示效果.所以,还是打开原来的Psychologist工程,在开始之前,我会用第五课讲的自动布局知识,让视图能在横屏模式下也可以正常显示.这一部分不细讲,参考第五课. 下面就可以

c#开发Mongo笔记第二篇

写到第二篇不得不说是我之前犯了一个小错误,其实实现子表存储也是很简单的事,先说我想实现什么样的效果吧 就是用户表里有个成绩字段,成绩字段是个子表 其实实现这个功能也很简单,用面向对象的思想很好理解,子表就是user表的一个对象字段或者集合字段,所以我觉得用c#开发Mongo用面向对象的思想开发更合适一些 public class User { public ObjectId Id { get; set; } public string Name { get; set; } public stri

c#开发Mongo笔记第一篇

转 :http://www.cnblogs.com/bjjjunjie/p/4076177.html 现在开发的这个项目要用mongo数据库开发,发现网上的这方面教程还是比较少的,只能边看官方说明边进行开发,再开发过程中写下笔记,也算上是一个总结吧. 我开发使用的是vs2013了,驱动用的是最新的1.9.2版本的 网上连接数据库的教程一搜一大堆,我就不多赘述了,只一个写一个连接数据库的方法吧 1 protected void GetConnection() 2 { 3 4 //定义Mongo服务

c#开发Mongo笔记第九篇

用skip略过少量的文档还是不错的.但是要是数量非常多的话,skip就会变得很慢,因为要先找到需要被略过的数据,然后再抛弃这些数据.大多数数据库都会在索引中保存更多的元数据,用于处理skip, 但是mongoDB目前还不支持,所以要尽量避免略过太多的数据 .通常可以利用上次的结果来计算下一次的查询条件. 最简单的分页方法就是用limit返回结果的第一页,然后将每个后续页面作为相对开始的偏移量返回. 比如var page1=db.Log.find(query).skip(100).limit(10