类图:
Customer.cs实体类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MongoDB.Bson;
namespace MongoDemo
{
public class Customer
{
public ObjectId _id { get; set; }
public ObjectId CustomerId { get; set; }
public string CustomerName { get; set; }
public string ContactName { get; set; }
public string Address { get; set; }
public string PostalCode { get; set; }
public string Telephone { get; set; }
}
}
CustomerHelper.cs
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MongoDB.Bson;
using MongoDB.Driver;
namespace MongoDemo
{
public class CustomerHelper
{
public static void Insert(Customer customer)
{
customer.CustomerId = new ObjectId(Guid.NewGuid().ToString("N"));
// 首先创建一个连接
MongoClient mongo = new MongoClient(ConfigHelper.ConnectionString);
var dataBase = mongo.GetDatabase(ConfigHelper.DataBaseName);
// 根据类型获取相应的集合
var collection = dataBase.GetCollection<Customer>("Customer");
// 向集合中插入对象
collection.InsertOne(customer);
}
public static void Delete(ObjectId customerId)
{
MongoClient mongo = new MongoClient(ConfigHelper.ConnectionString);
var dataBase = mongo.GetDatabase(ConfigHelper.DataBaseName);
var collection = dataBase.GetCollection<Customer>("Customer");
collection.DeleteOne(item => item.CustomerId == customerId); //唯一Id确保只删除一条记录
}
/// <summary>
/// 修改
/// </summary>
/// <param name="customer"></param>
public static void Update(Customer customer)
{
MongoClient mongo = new MongoClient(ConfigHelper.ConnectionString);
var dataBase = mongo.GetDatabase(ConfigHelper.DataBaseName);
var collection = dataBase.GetCollection<Customer>("Customer");
var filter = Builders<Customer>.Filter.Eq("CustomerId", customer.CustomerId);
var update = Builders<Customer>.Update
.Set("CustomerName", "腾讯科技")
.Set("Telephone", "1389999999")
.CurrentDate("lastModified");
collection.UpdateOne(filter, update);
}
public static List<Customer> Find(QueryDocument query)
{
MongoClient mongo = new MongoClient(ConfigHelper.ConnectionString);
var dataBase = mongo.GetDatabase(ConfigHelper.DataBaseName);
var collection = dataBase.GetCollection<Customer>("Customer");
List<Customer> list = collection.Find(query).ToList();
return list;
}
}
}
UploadHelper.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MongoDB.Driver;
using MongoDB.Driver.GridFS;
namespace MongoDemo
{
public class UploadHelper
{
/// <summary>
/// 上传文件测试方法
/// </summary>
/// <returns></returns>
public static bool Upload()
{
MongoServerSettings mongoSetting = new MongoServerSettings();
mongoSetting.MaxConnectionPoolSize = 15000;//设定最大连接池
mongoSetting.WaitQueueSize = 500;//设定等待队列数
mongoSetting.Server = new MongoServerAddress("192.168.1.176", 27017);
MongoServer mongo = new MongoServer(mongoSetting);
MongoGridFSSettings fsSetting = new MongoGridFSSettings() { Root = "DocPdf" };
//实例化一个GridFS
MongoGridFS gridfs = new MongoGridFS(mongo, ConfigHelper.DataBaseName, fsSetting);
//将本地文件上传到mongoDB中去,以默认块的大小256KB对文件进行分块
gridfs.Upload("100100.pdf", "Test.pdf");
return true;
}
public static void DownLoad()
{
MongoServerSettings mongoSetting = new MongoServerSettings();
mongoSetting.MaxConnectionPoolSize = 15000;//设定最大连接池
mongoSetting.WaitQueueSize = 500;//设定等待队列数
mongoSetting.Server = new MongoServerAddress("127.0.0.1", 27017);
MongoServer mongo = new MongoServer(mongoSetting);
MongoDatabase dataBase = mongo.GetDatabase(ConfigHelper.DataBaseName);
MongoGridFSSettings fsSetting = new MongoGridFSSettings() { Root = "DocPdf" };
//获取文件值
string moFileName = "Test.pdf";
//获取图片名
//通过文件名去数据库查值
MongoGridFS fs = new MongoGridFS(dataBase, fsSetting);
MongoGridFSFileInfo gfInfo = new MongoGridFSFileInfo(fs, moFileName);
//方法一,很简洁
string fileName = Guid.NewGuid().ToString() + ".pdf";
fs.Download(fileName, moFileName);
}
}
}
ConfigHelper.cs
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MongoDemo
{
/// <summary>
/// 初始化配置文件数据
/// </summary>
public class ConfigHelper
{
/// <summary>
/// MongoDb数据链链接地址
/// </summary>
public static string ConnectionString { get; set; }
/// <summary>
/// MongoDb数据库
/// </summary>
public static string DataBaseName { get; set; }
/// <summary>
/// 初始化配置文件数据
/// </summary>
public static void Init()
{
ConnectionString = ConfigurationManager.AppSettings["MongoDbServer"];
DataBaseName = ConfigurationManager.AppSettings["DataBaseName"];
}
}
}
Program.cs
using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MongoDB.Driver.GridFS;
namespace MongoDemo
{
class Program
{
static void Main(string[] args)
{
//初始化配置文件
ConfigHelper.Init();
try
{
#region 插入数据测试(注意数据量是100W条)
//int start = Environment.TickCount;
//for (int index = 0; index < 1000000; index++)
//{
// Customer customer = new Customer()
// {
// Address = "上海长宁区",
// ContactName = "0755-12345678",
// CustomerName = "上海动物园" + (index + 1).ToString(),
// PostalCode = "518000",
// Telephone = "1388888888888"
// };
// CustomerHelper.Insert(customer);
//}
//int end = Environment.TickCount;
//Console.WriteLine("100000行数据处理耗时" + (end - start).ToString() + "ms");
#endregion
#region 更新
//Customer customer = new Customer()
//{
// Address = "深圳南山区",
// ContactName = "0755-12345678",
// CustomerName = "腾讯科技",
// PostalCode = "518000",
// Telephone = "1389999999",
// CustomerId = "c57e40ea343b4154ae3641e224525602"
//};
//CustomerHelper.Update(customer);
#endregion
#region 查询
//var query = new QueryDocument { { "CustomerName", "中科软3" } };
var query = new QueryDocument { { "CustomerId", new ObjectId("9cc11fa2aa7f400aba9a0649") } };
var list = CustomerHelper.Find(query);
#endregion
CustomerHelper.Delete(new ObjectId("7f10ea7d8abf4c0285620f49"));
MongoServerSettings mongoSetting = new MongoServerSettings();
mongoSetting.MaxConnectionPoolSize = 15000;//设定最大连接池
mongoSetting.WaitQueueSize = 500;//设定等待队列数
mongoSetting.Server = new MongoServerAddress("127.0.0.1", 27017);
int count = MongoServer.MaxServerCount;
MongoServer mongo=new MongoServer(mongoSetting);
MongoDatabase dataBase = mongo.GetDatabase(ConfigHelper.DataBaseName);
MongoGridFSSettings fsSetting = new MongoGridFSSettings() { Root = "DocPdf" };
//实例化一个GridFS
MongoGridFS gridfs = new MongoGridFS(dataBase, fsSetting);
//将本地文件上传到mongoDB中去,以默认块的大小256KB对文件进行分块
//gridfs.Upload("100100.pdf", "Test.pdf");
//获取文件值
string moFileName = "Test.pdf";
//获取图片名
//通过文件名去数据库查值
MongoGridFS fs = new MongoGridFS(dataBase, fsSetting);
MongoGridFSFileInfo gfInfo = new MongoGridFSFileInfo(fs, moFileName);
//方法一,很简洁
string fileName = Guid.NewGuid().ToString() + ".pdf";
fs.Download(fileName, moFileName);
Console.ReadLine();
}
catch (Exception e)
{
throw;
}
}
}
}
运行结果如图:
(根据需要把注释代码还原)