c#开发Mongo笔记第三篇

今天主要测试了一下查询功能了,当然了主要还是为了让查询可以和我们平时使用的实体对象关联起来,并且 那些BsonDocument和Collection我们操作起来不是太方便的

还是首先定义了一个用户类,注意这个类需要和mongo中的对象的字段完全匹配,包括大小写,不然查询的时候会出现字段无法匹配的错误

    public class User
    {
        public ObjectId Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }

    }

有了实体类就是怎么让查询结果和实体类关联起来了,

var list=     collection.FindAllAs<User>();

主要是在findAllAs的时候查出来一个泛型集合,但是这个集合无法转成List集合(当然了,是我不会转,还希望会转的拍砖),它返回的集合是MongoCurror类型的,操作起来也不方便,干脆就用弱类型接收吧。

值得欣慰 的是这个集合在遍历的时候可以转换成User对象。

最大的好消息是在对这个集合查询的时候支持linq查询,是不是太强大了,让我们一起欢呼吧!!

  MongoDatabase db = MongoHelper.GetConnection();
            MongoCollection collection = db.GetCollection<User>("user");
            User user = new User();
            user.Name = "lisi";
            user.Age = 20;
            collection.Insert<User>(user);
       var list=     collection.FindAllAs<User>();
       foreach (User item in list.Where(u=>u.Name=="lisi"))
       {
           Response.Write(item.Name);
       }
            //删除
      // collection.Remove(new QueryDocument());

代码都很简单,主要是测试了一个把查询结果转成对象和一个linq条件查询

时间: 2024-07-31 13:47:37

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笔记第七篇

开发到这里遇到了一些问题,哪到这里想请教一下大家 今天我完成的是菜单功能, 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; s

c#开发Mongo笔记第五篇

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

c#开发Mongo笔记第二篇

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

Xamrin开发安卓笔记(三)

安装片 Xamrin开发安卓笔记(一) Xamrin开发安卓笔记(二) 这次记录的是滚动条跟sqlite创建.存储和读取. 先说滚动条相关,这个是比较简单的知识点. 当有一屏的东西需要填写的时候例如下图 我们都知道如果点击第一个文本框则会出现输入法.但是如果没有滚动条的话,只能依靠输入法中的回车一个一个的向下移动(虽然现在输入法都带自我关闭功能),很不友好,那么就需要滚动条,看了一下布局属性有滚动条,但是使用起来不好使.隐约想起来,安卓有滚动条控件,就在左边找了一下,果真找到这个玩意了.如下图

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