官方驱动:https://github.com/mongodb/mongo-csharp-driver/downloads。下载后,还提供了一个酷似msdn的帮助文档。

samus驱动:https://github.com/samus/mongodb-csharp/downloads

using System;
using System.Collections.Generic;
using System.Linq;
using MongoDB.Driver;
using MongoDB.Bson;
using MongoDB.Driver.Builders; namespace TestMongoDb
{
class Program
{
public static string connectionString = "mongodb://localhost";
//数据库名
private static string databaseName = "TestDb"; static void Main(string[] args)
{
// 添加一条数据
//Users us = new Users() { Age = 123, Name = "TestNameA", Sex = "F" };
//us.Insert(); // 删除一条数据
//IMongoQuery iq = new QueryDocument("name", "TestNameA");
//Users.Remove(iq); //修改一条数据
//IMongoQuery iq = new QueryDocument("name", "TestNameA");
//IMongoUpdate iu = MongoDB.Driver.Builders.Update.Set("sex", "M").Set("age", 100);
//Users.Update(iq, iu); //获取数据列表
//IMongoQuery iq = new QueryDocument("name", "TestNameA");
IMongoQuery iq = Query.And(Query.GTE("age", ), Query.Matches("name", "/^Test/"));//>40
List<Users> userList = Users.Search(iq).ToList(); foreach (Users item in userList)
{
Console.WriteLine(item.Name + " " + item.Sex);
}
} public class Users
{
private static string tableUser = "Users"; public Users() { }
public Users(String name, Int32 age, String sex)
{
Name = name;
Age = age;
Sex = sex;
}
public String Name { get; set; }
public Int32 Age { get; set; }
public String Sex { get; set; }
public Boolean Insert()
{
BsonDocument dom = new BsonDocument {
{ "name", Name },
{ "age", Age },
{"sex",Sex}
};
return MongoHelper.Insert(tableUser, dom);
}
public static IEnumerable<Users> Search(IMongoQuery query)
{
foreach (BsonDocument tmp in MongoHelper.Search(tableUser, query))
yield return new Users(tmp["name"].AsString, tmp["age"].AsInt32, tmp["sex"].AsString);
}
public static Boolean Remove(IMongoQuery query)
{
return MongoHelper.Remove(tableUser, query);
}
public static Boolean Update(IMongoQuery query, IMongoUpdate new_doc)
{
return MongoHelper.Update(tableUser, query, new_doc);
}
}
public static class MongoHelper
{
public static MongoCursor<BsonDocument> Search(String collectionName, IMongoQuery query)
{
//定义Mongo服务
MongoServer server = MongoServer.Create(connectionString);
//获取databaseName对应的数据库,不存在则自动创建
MongoDatabase mongoDatabase = server.GetDatabase(databaseName);
MongoCollection<BsonDocument> collection = mongoDatabase.GetCollection<BsonDocument>(collectionName);
try
{
if (query == null)
return collection.FindAll();
else
return collection.Find(query);
}
finally
{
server.Disconnect();
}
}
/// <summary>
/// 新增
/// </summary>
public static Boolean Insert(String collectionName, BsonDocument document)
{
MongoServer server = MongoServer.Create(connectionString);
MongoDatabase mongoDatabase = server.GetDatabase(databaseName);
MongoCollection<BsonDocument> collection = mongoDatabase.GetCollection<BsonDocument>(collectionName);
try
{
collection.Insert(document);
server.Disconnect();
return true;
}
catch
{
server.Disconnect();
return false;
}
}
/// <summary>
/// 修改
/// </summary>
public static Boolean Update(String collectionName, IMongoQuery query, IMongoUpdate new_doc)
{
MongoServer server = MongoServer.Create(connectionString);
MongoDatabase mongoDatabase = server.GetDatabase(databaseName);
MongoCollection<BsonDocument> collection = mongoDatabase.GetCollection<BsonDocument>(collectionName);
try
{
collection.Update(query, new_doc);
server.Disconnect();
return true;
}
catch
{
server.Disconnect();
return false;
}
}
/// <summary>
/// 移除
/// </summary>
public static Boolean Remove(String collectionName, IMongoQuery query)
{
MongoServer server = MongoServer.Create(connectionString);
MongoDatabase mongoDatabase = server.GetDatabase(databaseName);
MongoCollection<BsonDocument> collection = mongoDatabase.GetCollection<BsonDocument>(collectionName);
try
{
collection.Remove(query);
server.Disconnect();
return true;
}
catch
{
server.Disconnect();
return false;
}
}
}
}
}

MongoDB 之C#实践的更多相关文章

  1. Mongodb极简实践

    MongoDB 极简实践入门 1. 为什么用MongoDB? 传统的计算机应用大多使用关系型数据库来存储数据,比如大家可能熟悉的MySql, Sqlite等等,它的特点是数据以表格(table)的形式 ...

  2. MongoDB 极简实践入门

    原作者StevenSLXie; 原链接(https://github.com/StevenSLXie/Tutorials-for-Web-Developers/blob/master/MongoDB% ...

  3. MongoDB开发最佳实践

    MongoDB开发最佳实践 连接到MongoDB · 关于驱动程序:总是选择与所用之MongoDB相兼容的驱动程序.这可以很容易地从驱动兼容对照表中查到: · 如果使用第三方框架(如Spring Da ...

  4. java mongodb连接配置实践——生产环境最优

    之前百度,google了很多,发现并没有介绍mongodb生产环境如何配置的文章, 当时想参考下都不行, 所以写篇文章,大家可以一块讨论下. 1. MongoClientOptions中的连接池配置: ...

  5. mongodb连接配置实践

    之前百度,google了很多,发现并没有介绍mongodb生产环境如何配置的文章, 当时想参考下都不行, 所以写篇文章,大家可以一块讨论下. 1. MongoClientOptions中的连接池配置: ...

  6. MongoDB 上手开发实践(入门上手开发这一篇就够了)

    前言 MongoDB是一个介于 关系数据库 和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.它支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复 ...

  7. MongoDB最佳安全实践

    在前文[15分钟从零开始搭建支持10w+用户的生产环境(二)]中提了一句MongoDB的安全,有小伙伴留心了,在公众号后台问.所以今天专门开个文,写一下关于MongoDB的安全. 一.我的一次Mong ...

  8. 如何将Log4Net 日志保存到mongodb数据库之实践

    log4net的大名早有耳闻,一直没真正用过,这次开发APP项目准备在服务端使用log4net. 日志的数据量较大,频繁的写数据库容易影响系统整体性能,所以独立将日志写到mongodb数据库是不错的选 ...

  9. 暑假第七周总结(安装MongoDB和Tomcat以及MongoDB进行编程实践)

    本周主要对MongoDB和Tomcat进行了安装,两项安装都遇到了一些问题.其中在对MongoDB安装过程中出现了什么没有秘钥安全证书的,最终找了一堆教程重复了好多遍之后安装成功,虽然在启动和关闭的时 ...

随机推荐

  1. iOS 检测状态栏点击事件

    当tableView.scrollsToTop=YES不管用时,可以使用以下方法实现点击状态栏使tableView滚动到顶部. - (void) touchesBegan:(NSSet *)touch ...

  2. http tcp udp ip 间的关系

    首先,我自己梳理一下,其实除了应对以后的笔试,还有需要应对的是自己在编程中对于api的选择,我在满足需求时采取哪种方案更好. 首先,我需要了解的是tcp/ip是一个协议组,有三大层: ip 对应于网络 ...

  3. Oracle Flashback 闪回

    Oracle 的闪回技术是一种数据恢复技术,仅能对用户逻辑错误进行恢复, 闪回针对的是提交commit的事务,没有提交的事务,使用rollback 1.闪回版本查询 Flashback Version ...

  4. ARP报文发送的可视化实现

    一.安装VS2013,下载wpdpack,为VS2010配置WinpCap环境: ⑴首先在View中选择Property Manager,然后展开工程,再展开Debug|Win32 ,接着右击 Mir ...

  5. bootstrap之clearfix

    bootstrap之clearfix 在bootstrap辅助类中有那么一类,是这么定义的: 利用clearfix样式清除浮动,但是前提条件是在超小型屏幕上能显示才行(因为其是用visible-xs样 ...

  6. 客户端连接注册Ejabberd新用户

    今天需要使用客户端注册新用户,结果发现注册失败,在管理后台添加新用户成功.编译安装ejabberd就没有管了,经过翻论坛的到解决方法 在ejabberd.yml中. access: trusted_n ...

  7. 创建Chrome启动器

    今天清理垃圾时不知怎么把chrome启动器删除了,现在要重新创建一个 1.在桌面创建一个chrome.exe的快捷键方式,属性更改目标为: "C:\Program Files (x86)\G ...

  8. jQuery中事件与动画的总结

       1.加载DOM     1.1.window事件 window.onload=function(){}.... 时机:其他资源都加载完毕后,再执行   $(function(){}) ……:只是 ...

  9. WPF整理-Mutex确保Application单例运行

    有时我们不希望我们的WPF应用程序可以同时运行有多个实例,当我们试图运行第二个实例的时候,已经运行的实例也应该弹出来. 我们可以用Mutex来实现 打开App.xaml.cs,在App类中添加如下内容 ...

  10. Permission denied user=hadoop access=WRITE inode=root rootsupergroup rwxr

    有段时间没有写了,反正我写的都是跟流水账一样.不为别人看,当然,其中也记录了很多我踩过的坑,可能也能给别人提个醒.最重要的是:这是我学习的记忆 上面的错误是由于我将reducer的输出目录设置在hdf ...