c#开发Mongo笔记第六篇

之前写的五篇比较得到了大家的积极反馈,也有个别高手对我写我写出的代码进行了指教。

其中提到的我写的查询方法性能有问题,我想了想,如果mongo不是延时加载的话,那我的查询就真的有问题了,就成了查询出来所有的数据再进行二次筛选了。

可能这也是之前总是使用entity framework框架导致的习惯性这么写了吧。今天赶紧进行了一下代码,现在贴出来一下,省的之前的错误写法误导了大家,再此也感谢大家对我的批评指正

  public static User GetById(ObjectId id)
        {
            MongoDatabase db = MongoHelper.GetConnection();
            MongoCollection collection = db.GetCollection<User>("User");
        return    collection.FindOneByIdAs<User>(id);

        }
        public static User GetByName(string name)
        {
            MongoDatabase db = MongoHelper.GetConnection();
            MongoCollection collection = db.GetCollection<User>("User");
            var query = Query.And(Query.EQ("UserName", name));
         return   collection.FindOneAs<User>(query);

        }

        public static MongoCollection GetCollection()
        {
            MongoDatabase db = MongoHelper.GetConnection();
            return db.GetCollection<User>("User");
        }

        public static bool IsHasUser(IMongoQuery query)
        {
            MongoDatabase db = MongoHelper.GetConnection();
            MongoCollection collection = db.GetCollection<User>("User");
        return    collection.Count(query)>0;

        }

        public static void Update(IMongoQuery query,IMongoUpdate  update)
        {
            MongoDatabase db = MongoHelper.GetConnection();
            MongoCollection collection = db.GetCollection<User>("User");
            collection.Update(query, update);
        }

从灵活的角度我我觉得还是都传imongoquery类型的参数吧,比直接传string 类型的字符串要灵活的多,调用这个函数的时候我通常这么写

  var queryName = Query.And(Query.EQ("UserName", cwsnuser));
                        //验证用户是否存在
                        if (DALUser.IsHasUser(queryName))
                        {
                            return Content("2");//用户名重复
                        }
时间: 2024-10-03 21:53:36

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

c#开发Mongo笔记第八篇

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

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

今天主要测试了一下查询功能了,当然了主要还是为了让查询可以和我们平时使用的实体对象关联起来,并且 那些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

spss C# 二次开发 学习笔记(六)——Spss统计结果的输出

Spss的二次开发可以很简单,实例化一个对象,然后启用服务,接着提交命令,最后停止服务. 其中重点为提交命令,针对各种统计功能需求,以及被统计分析的数据内容等,命令的内容可以很复杂,但也可以简单的为一个字符串.命令的获取,可以类似于Office录制宏一样,操作的过程中,Spss输出应用程序会记录命令内容,然后可以参考命令语法手册,去完善命令内容. 而获取输出结果,即获取统计的图.表等内容,功能很强大,当然起初操作起来也有些不可思议.它不是常规的进行统计,然后执行输出命令获取输出结果.Spss的输

IOS学习之斯坦福大学IOS开发课程笔记(第六课)

转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/28398697 作者:小马 这节课主要讲述多个MVC是如何协同工作的.到目前为止,所有的课程都只是涉及到一个视图.从这节课开始,将会持到多视图应用的例子. 多视图开发这里用navigationController举例子.这个也是比较常用的.如上图所示,一个 navigation Controller(MVC)会指向一个rootViewController(另一个MVC),这个是第一

Python开发【第十六篇】:AJAX全套

Python开发[第十六篇]:AJAX全套 概述 对于WEB应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上. 1.传统的Web应用 一个简单操作需要重新加载全局数据 2.AJAX AJAX,Asynchronous JavaScript and XML (异步的JavaScript和XML),一种创建交互式网页应用的网页开发技术方案. 异步的JavaScript:使用 [JavaScript语言] 以

c#开发Mongo笔记第二篇

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