MongoDB 學習筆記四 C#調用MongoDB


網址:http://blog.csdn.net/xundh/article/details/49449467

驅動

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

參考: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; }
  • 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM