C# MongoDB基本操作

来源:转载

驱动

  • 下载
    https://github.com/mongodb/mongo-csharp-driver/downloads
  • 项目地址:
    https://github.com/mongodb/mongo-csharp-driver

  • 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支持的环境不同。

Version 2.0 ✓ ✓ ✓ Version 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

我这里下载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 modifierscollection.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>用户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



分享给朋友:
您可能感兴趣的文章:
随机阅读: