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

其中提到的我写的查询方法性能有问题,我想了想,如果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)>; } 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("");//用户名重复
}

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

  1. c#开发Mongo笔记第八篇

    到今天为止,Mongo开发的权限管理系统功能就做完了,剩下的就是完善构架,优化结构,只是现在c#操作Mongo的各种操作基本都掌握了 说到权限管理系统,其实再简单不过了,在关系型数据的是时代,我们通常 ...

  2. c#开发Mongo笔记第四篇

    今天是个伟大的日子,不得不说小苹果的歌词真是深入人心啊. 不过今天伟大并不是因为我种下一颗种子,而是我从今天不再写demo,而是进入项目的正式开发当中,毕竟项目时间有限(想必各位码农也都深有体会吧), ...

  3. c#开发Mongo笔记第七篇

    开发到这里遇到了一些问题,哪到这里想请教一下大家 今天我完成的是菜单功能, public class Menu { public ObjectId _id { get; set; } public i ...

  4. c#开发Mongo笔记第三篇

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

  5. c#开发Mongo笔记第五篇

    现在增删查改算是都完成了,但是查询算是有点不完美的,相信现在用juqeryeasyui这一类的插件的人应该也不少吧,这样的话前台展示需要JSON格式的数据, 好在mogno驱动提供toJson()的函 ...

  6. ASP.NET Core Web开发学习笔记-1介绍篇

    ASP.NET Core Web开发学习笔记-1介绍篇 给大家说声报歉,从2012年个人情感破裂的那一天,本人的51CTO,CnBlogs,Csdn,QQ,Weboo就再也没有更新过.踏实的生活(曾辞 ...

  7. c#开发Mongo笔记第二篇

    写到第二篇不得不说是我之前犯了一个小错误,其实实现子表存储也是很简单的事,先说我想实现什么样的效果吧 就是用户表里有个成绩字段,成绩字段是个子表 其实实现这个功能也很简单,用面向对象的思想很好理解,子 ...

  8. c#开发Mongo笔记第一篇

    现在开发的这个项目要用mongo数据库开发,发现网上的这方面教程还是比较少的,只能边看官方说明边进行开发,再开发过程中写下笔记,也算上是一个总结吧. 我开发使用的是vs2013了,驱动用的是最新的1. ...

  9. c#开发Mongo笔记第九篇

    用skip略过少量的文档还是不错的.但是要是数量非常多的话,skip就会变得很慢,因为要先找到需要被略过的数据,然后再抛弃这些数据.大多数数据库都会在索引中保存更多的元数据,用于处理skip, 但是m ...

随机推荐

  1. python---dict字典

    Python 字典 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式 ...

  2. 使用air16sdk打包ipa报错

    报错如下图: google下 https://forums.adobe.com/thread/1659726 说明了一切 首先:air sdk中打包ipa 需要使用ios sdk的路径但是这个路径最后 ...

  3. R中,去掉dataframe中的NA行

    R中使用complete.cases 和 na.omit来去掉包含NA的行 现在有个一data.frame  datafile如下所示 Date        sulfate nitrate ID 1 ...

  4. Hive操作表部分总结

    创建表: create table tableName(time INT,userid BIGINT,url STRING,ip STRING COMMENT 'IP Address of the U ...

  5. ADF_Controller系列5_通过绑定TasksFlow创建Train

    2015-02-14 Created By BaoXinjian

  6. 如何把项目部署到OSChina上

    1. 在苹果电脑终端   ls -la  查看当前目录所有的隐藏文件 2. 删除 .ssh文件  rm -rf .ssh 3.创建一个隐藏的文件  mkdir .ssh   在查看 4.进入 .ssh ...

  7. QT学习之路--创建一个对话框

    Q_OBJECT:这是一个宏,凡是定义信号槽的类都必须声明这个宏. 函数tr()全名是QObject::tr(),被他处理过的字符串可以使用工具提取出来翻译成其他语言,也就是做国际化使用. 对于QT学 ...

  8. osmdroid启程

    osmdroid一个牛逼的开源地图引擎,从今天开始好好研究一下~

  9. 16. Copy List with Random Pointer

    类同:剑指 Offer 题目汇总索引第26题 Copy List with Random Pointer A linked list is given such that each node cont ...

  10. zhuang 定制iOS 7中的导航栏和状态栏

    近期,跟大多数开发者一样,我也正忙于对程序进行升级以适配iOS 7.最新的iOS 7外观上有大量的改动.从开发者的角度来看,导航栏和状态栏就发生了明显的变化.状态栏现在是半透明的了,这也就意味着导航栏 ...