驱动

C#/.NET Driver Version MongoDB 2.4 MongoDB 2.6 MongoDB 3.0
Version 2.0
Version 1.10
Driver Version .NET 3.5 .NET 4.0 .NET 4.5 Mono 2.10 Mono 3.x
Version 2.0      
Version 1.10

我这里下载1.10版本,framework 4.0环境。

使用

连接

using MongoDB.Bson;
using MongoDB.Driver;
var client = new MongoClient("mongodb://localhost:27017");
var server = client.GetServer();
var database = server.GetDatabase("foo");
var collection = database.GetCollection<BsonDocument>("bar"); await collection.InsertOneAsync(new BsonDocument("Name", "Jack")); var list = await collection.Find(new BsonDocument("Name", "Jack"))
.ToListAsync(); foreach(var document in list)
{
Console.WriteLine(document["Name"]);
}

Document是实体类

using MongoDB.Bson;
using MongoDB.Driver;
public class Person
{
public ObjectId Id { get; set; }
public string Name { get; set; }
}
var client = new MongoClient("mongodb://localhost:27017");
var server = client.GetServer();
var database = server.GetDatabase("foo");
var collection = database.GetCollection<Person>("bar"); await collection.InsertOneAsync(new Person { Name = "Jack" }); var list = await collection.Find(x => x.Name == "Jack")
.ToListAsync(); foreach(var person in list)
{
Console.WriteLine(person.Name);
}

实体类给下面的代码使用

public class Entity
{
public ObjectId Id { get; set; }
public string Name { get; set; }
}

插入

var entity = new Entity { Name = "Tom" };
collection.Insert(entity);
var id = entity.Id; // Insert will set the Id if necessary (as it was in this example)

查找

var query = Query<Entity>.EQ(e => e.Id, id);
var entity = collection.FindOne(query);
// var entity = collection.FindOneByIdAs<Entity>(id); /*
定义一个查询:查询stdid=1的文档
FindOneArgs args = new FindOneArgs {
Query = Query.EQ("stdid", 1),//查询stdid field等于1的document。
};
//查询
var std = collection.FindOneAs<Student>(args);
*/
/*
查询多条
IMongoQuery query = Query.GTE("stdid",2);
var result=collection.FindAs<Student>(Query.GTE("stdid",2));
foreach (var each in result) {
Console.WriteLine(each.stdName);
}
*/

保存

entity.Name = "Dick";
collection.Save(entity);

更新

var query = Query<Entity>.EQ(e => e.Id, id);
var update = Update<Entity>.Set(e => e.Name, "Harry"); // update modifiers
collection.Update(query, update);

删除

var query = Query<Entity>.EQ(e => e.Id, id);
collection.Remove(query);

这是一个完整的示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; using MongoDB.Bson;
using MongoDB.Driver;
using MongoDB.Driver.Builders; namespace ConsoleApplication1
{
public class Entity
{
public ObjectId Id { get; set; }
public string Name { get; set; }
} class Program
{
static void Main(string[] args)
{
var connectionString = "mongodb://localhost";
var client = new MongoClient(connectionString);
var server = client.GetServer();
var database = server.GetDatabase("test");
var collection = database.GetCollection<Entity>("entities"); var entity = new Entity { Name = "Tom" };
collection.Insert(entity);
var id = entity.Id; var query = Query<Entity>.EQ(e => e.Id, id);
entity = collection.FindOne(query); entity.Name = "Dick";
collection.Save(entity); var update = Update<Entity>.Set(e => e.Name, "Harry");
collection.Update(query, update); collection.Remove(query);
}
}
}

参考:http://mongodb.github.io/mongo-csharp-driver/1.10/getting_started/

LinQ查询

C# driver 1.8版本开始支持Linq查询。

var linquery = from e in collection.AsQueryable<SY.Model.User>()
//where e.age> 22
select e;
linquery=linquery.Where(c=>c.Name=="张三");
int count=linquery.Count();

参考:http://mongodb.github.io/mongo-csharp-driver/1.10/linq/

Document查询方式

未测试,参考地址记录在这里。

//Document docName = new Document { { "字段名1", "输入值1" }, { "字段名2", "输入值2" } };
/// <summary>
/// 根据姓名获取用户信息
/// </summary>
/// <param name="mUserInfo">用户Model类</param>
/// <returns>用户泛型集合</returns>
public List<UserInfo> GetUserByName(UserInfo mUserInfo)
{
List<UserInfo> lsUser = new List<UserInfo>();
using (Mongo mongo = new Mongo("mongodb://localhost"))
{
MongoDatabase mongoDatabase = mongo.GetDatabase("UserInfo") as MongoDatabase;
MongoCollection<Document> mongoCollection = mongoDatabase.GetCollection<Document>("myCollection") as MongoCollection<Document>;
mongo.Connect();
Document docName = new Document { { "FirstName", "aaa" }, { "LastName", "bbb" } };
MongoDB.ICursor<Document> users = mongoCollection.Find(docName); foreach (Document user in users.Documents)
{
UserInfo mUser = new UserInfo();
mUser.FirstName = user["FirstName"].ToString();
mUser.LastName = user["LastName"].ToString();
mUser.CorporationName = user["CorporationName"].ToString();
mUser.Phone = user["Phone"].ToString();
mUser.Email = user["Email"].ToString();
mUser.UserType = user["UserType"].ToString();
lsUser.Add(mUser);
}
} return lsUser;
}

http://weishangxue.blog.163.com/blog/static/21575188201181633811102/ 
http://mikaelkoskinen.net/post/mongodb-aggregation-framework-examples-in-c

MongoDB 学习笔记四 C#调用MongoDB的更多相关文章

  1. MongoDB学习笔记—Linux下搭建MongoDB环境

    1.MongoDB简单说明 a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案. b MongoDB是一个介于关系 ...

  2. MongoDB 学习笔记(三) MongoDB (replica set) 集群配置

    MongoDB Replica Sets的结构类似于以集群,完全可以把他当成一个集群,因为他确实与集群实现的作用是一样的:如果其中一个节点出现故障,其他的节点会马上将业务接管过来.而无需停机操作 Mo ...

  3. Mongodb学习笔记四(Mongodb聚合函数)

    第四章 Mongodb聚合函数 插入 测试数据 ;j<;j++){ for(var i=1;i<3;i++){ var person={ Name:"jack"+i, ...

  4. MongoDB学习笔记四:索引

    索引就是用来加速查询的.创建数据库索引就像确定如何组织书的索引一样.但是你的优势是知道今后做何种查询,以及哪些内容需要快速查找.比如:所有的查询都包括"date"键,那么很可能(至 ...

  5. MongoDB学习笔记(四) 用MongoDB的文档结构描述数据关系

    MongoDB的集合(collection)可以看做关系型数据库的表,文档对象(document)可以看做关系型数据库的一条记录.但两者并不完全对等.表的结构是固定的,MongoDB集合并没有这个约束 ...

  6. MongoDB学习笔记四—增删改文档下

    $slice 如果希望数组的最大长度是固定的,那么可以将 $slice 和 $push 组合在一起使用,就可以保证数组不会超出设定好的最大长度.$slice 的值必须是负整数. 假设$slice的值为 ...

  7. Mongodb学习笔记五(C#操作mongodb)

    mongodb c# driver(驱动)介绍 目前基于C#的mongodb驱动有两种,分别是官方驱动(下载地址)和samus驱动(下载地址). 本次我们只演示官方驱动的使用方法. 官方驱动文档查看 ...

  8. MongoDB 学习笔记(二)—— MongoDB Shell

    MongoDB自带一个JavaScript shell 可以从命令行中与MongoDB交互,功能非常强大.如在上一节最后一张图所看到,可以执行JavaScript程序. 运行Shell 前提是启动Mo ...

  9. MongoDB学习笔记(三、MongoDB聚合与更新)

    目录: 聚合 更新 更新选择器 ObjectId 更新操作的原子性 聚合: 聚合语法:db.collectionName.aggregate(aggregate_operation) 聚合操作其实就是 ...

随机推荐

  1. 消息队列—ActiveMQ

    1.   学习计划 1.什么是MQ 2.MQ的应用场景 3.ActiveMQ的使用方法. 4.使用消息队列实现商品同步. 2.   同步索引库分析 方案一:在manager(后台)中,添加商品的业务逻 ...

  2. 违反“Don’t Modify Objects You Don’t Own”原则对SharePoint页面带来的影响

    最近看了一本相当不错的JavaScript书,<Maintainable JavaScript>(中文版叫做<编写可维护的JavaScript>),"Don't Mo ...

  3. css水平居中,竖直居中技巧(二)

    css水平居中,竖直居中技巧(二)===### 1.效果 ### 2.代码#### 2.1.index.html <!DOCTYPE html> <html lang="z ...

  4. 磁盘io测试工具

    1. ATTO Disk Benchmark 2.DiskSpd磁盘性能测试工具

  5. ProxyPattern(23种设计模式之一)

    设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒置原则 设计模式六大原则(4):接口隔离原则 设计模式六大原则(5):迪米特法则 设计模式六大 ...

  6. 手把手教你生成二维码-google.zxing

    一.目标 输入网址,生成网址的二维码 二.概况 1.效果:UI丑,但功能实现了 2.项目目录 三.用到的第三方资源 1.google的扫码包zxing 2.JQuery 四.步骤(用myEclipse ...

  7. [SoapUI] 通过Groovy调用批处理文件.bat

    import com.eviware.soapui.support.GroovyUtils def groovyUtils = new GroovyUtils( context ) def proje ...

  8. 彻底修改Eclipse的默认编码

    引用各位前辈经验得到彻底修改eclipse默认编码的方法. 单在eclipse里设置编码方式非常复杂且容易遗漏,全部修改后,有些代码生成模板内的${encode}变量仍为原编码方案,经过查阅许多资料得 ...

  9. Yii2 集成 adminlteasset

    https://github.com/dmstr/yii2-adminlte-asset AdminLTE Asset Bundle Backend UI for Yii2 Framework, ba ...

  10. Spring框架总结(九)

    三.AOP编程 关注点代码:除了业务代码以外的代码.比如开启事务,关闭事务,异常处理核心业务代码:保存用户这一句才是重点.例子如下:// 保存一个用户public void add(User user ...