MongoDB 学习笔记四 C#调用MongoDB


http://www.cnblogs.com/a-du/p/7794038.html


驱动

C#/.NET Driver VersionMongoDB 2.4MongoDB 2.6MongoDB 3.0
Version 2.0
Version 1.10
Driver Version.NET 3.5.NET 4.0.NET 4.5Mono 2.10Mono 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



MongoD习记


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值