網址:http://blog.csdn.net/xundh/article/details/49449467
驅動
- 下載
https://github.com/mongodb/mongo-csharp-driver/downloads -
1.10 使用參考:
http://mongodb.github.io/mongo-csharp-driver/1.10/ -
1.10 API
http://api.mongodb.org/csharp/1.10/官方推薦使用Nuget進行安裝。但我搜索時出來東西太多了,分不清,故直接下載。
要注意的是,2.0 和1.10支持的環境不同。
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"]); }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
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); }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
實體類給下面的代碼使用
public class Entity { public ObjectId Id { get; set; } public string Name { get; set; } }
- 1
- 2
- 3
- 4
- 5
插入
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)
- 1
- 2
- 3
查找
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); } */
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
保存
entity.Name = "Dick"; collection.Save(entity);
- 1
- 2
更新
var query = Query<Entity>.EQ(e => e.Id, id); var update = Update<Entity>.Set(e => e.Name, "Harry"); // update modifiers collection.Update(query, update);
- 1
- 2
- 3
刪除
var query = Query<Entity>.EQ(e => e.Id, id); collection.Remove(query);
- 1
- 2
這是一個完整的示例:
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); } } }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
參考: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();
- 1
- 2
- 3
- 4
- 5
- 6
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; }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
http://weishangxue.blog.163.com/blog/static/21575188201181633811102/
http://mikaelkoskinen.net/post/mongodb-aggregation-framework-examples-in-c