1)下载MongoDB
https://www.mongodb.com/download-center#community
2)在D盘新建Data->db
3)执行命令
mongod --dbpath d:datadb
4)查看是否有文件写入
5)下载工具 Robomongo
http://www.softpedia.com/get/Internet/Servers/Database-Utils/Robomongo.shtml
6)生成服务
mongod.exe --bind_ip 127.0.0.1 --logpath "d:datadbConfmongodb.log" --logappend --dbpath "d:datadb" --port 27017 --serviceName "myFirst" --serviceDisplayName "myFirst" --install
7)常用命令
>show collections //显示当前数据库下的所有集合
>db.runoob.insert({"name":"菜鸟教程","taxcode":"123456"}) //添加数据
> db.runoob.update({'name':'菜鸟教程'},{'$set':{'taxcode':'test'}},upsert=true,multi=false) //name为菜鸟教程 更新记录taxcode为test
>db.runoob.find() //查询数据
>db.runoob.remove() //删除所有数据
> db.runoob.remove({'name':'菜鸟教程'}) //删除记录name为菜鸟教程
8)VS新建项目
9)NuGet引用 mongodb.driver 及 bson bson先装
10)执行代码
1)新建通用类
/// <summary>
/// 标准 新建类需继承
/// </summary>
public abstract class BaseEntity
{
public ObjectId Id { get; set; }
public string State { get; set; }
public string CreateTime { get; set; }
public string UpdateTime { get; set; }
}
2)新建要存储的数据结构类 需要继承标准类
public class Public:BaseEntity
{
public string colname { get; set; }
public string content { get; set; }
}
3)书写帮助类 网上收集
using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Web;
/// <summary>
/// 网上收集
/// </summary>
namespace MongodbDemo.Models
{
public class DB
{
//连接数据库
private static readonly string connStr = "mongodb://127.0.0.1:27017";//获取配置信息
private static readonly string dbName = "Demo";//获取配置信息
private static IMongoDatabase db = null;
private static readonly object lockHelper = new object();
//构造函数
public static IMongoDatabase GetDb()
{
if (db == null)
{
lock (lockHelper)
{
if (db == null)
{
var client = new MongoClient(connStr);
db = client.GetDatabase(dbName);
}
}
}
return db;
}
}
/// <summary>
/// 使用
/// </summary>
/// <typeparam name="T"></typeparam>
public class MongodbHelpers<T> where T : BaseEntity
{
private IMongoDatabase db = null;
private IMongoCollection<T> collection = null;
public MongodbHelpers()
{
this.db = DB.GetDb();
collection = db.GetCollection<T>(typeof(T).Name);
}
/// <summary>
/// 新增
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
public T Insert(T entity)
{
var flag = ObjectId.GenerateNewId();
entity.GetType().GetProperty("Id").SetValue(entity, flag);//获取参数类型 给id属性设置值
entity.State = "y";
entity.CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
entity.UpdateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
collection.InsertOneAsync(entity);
collection.InsertOneAsync(entity);//异步插入一个
return entity;
}
/// <summary>
/// 修改
/// </summary>
/// <param name="id">编号</param>
/// <param name="field">属性</param>
/// <param name="value">值</param>
public void Modify(string id, string field, string value)
{
var filter = Builders<T>.Filter.Eq("Id", ObjectId.Parse(id));
var updated = Builders<T>.Update.Set(field, value);
UpdateResult result = collection.UpdateOneAsync(filter, updated).Result;
}
/// <summary>
/// 更新
/// </summary>
/// <param name="entity"></param>
public void Update(T entity)
{
try
{
var old = collection.Find(e => e.Id.Equals(entity.Id)).ToList().FirstOrDefault();
foreach (var prop in entity.GetType().GetProperties())
{
var newValue = prop.GetValue(entity);
var oldValue = old.GetType().GetProperty(prop.Name).GetValue(old);
if (newValue != null)
{
if (oldValue == null)
oldValue = "";
if (!newValue.ToString().Equals(oldValue.ToString()))
{
old.GetType().GetProperty(prop.Name).SetValue(old, newValue.ToString());
}
}
}
old.State = "n";
old.UpdateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
var filter = Builders<T>.Filter.Eq("Id", entity.Id);
ReplaceOneResult result = collection.ReplaceOneAsync(filter, old).Result;
}
catch (Exception ex)
{
var aaa = ex.Message + ex.StackTrace;
throw;
}
}
/// <summary>
/// 删除
/// </summary>
/// <param name="entity"></param>
public void Delete(T entity)
{
var filter = Builders<T>.Filter.Eq("Id", entity.Id);
collection.DeleteOneAsync(filter);
}
/// <summary>
/// 根据id查询一条数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public T QueryOne(string id)
{
return collection.Find(a => a.Id == ObjectId.Parse(id)).ToList().FirstOrDefault();
}
/// <summary>
/// 查询所有数据
/// </summary>
/// <returns></returns>
public List<T> QueryAll()
{
return collection.Find(a => a.State != "").ToList();
}
/// <summary>
/// 根据条件查询一条数据
/// </summary>
/// <param name="express"></param>
/// <returns></returns>
public T QueryByFirst(Expression<Func<T, bool>> express)
{
return collection.Find(express).ToList().FirstOrDefault();
}
/// <summary>
/// 批量添加
/// </summary>
/// <param name="list"></param>
public void InsertBatch(List<T> list)
{
collection.InsertManyAsync(list);
}
/// <summary>
/// 根据Id批量删除
/// </summary>
public void DeleteBatch(List<ObjectId> list)
{
var filter = Builders<T>.Filter.In("Id", list);
collection.DeleteManyAsync(filter);
}
/// <summary>
/// 未添加到索引的数据
/// </summary>
/// <returns></returns>
public List<T> QueryToLucene()
{
return collection.Find(a => a.State.Equals("y") || a.State.Equals("n")).ToList();
}
}
}
4)简单调用
Public class1 = new Public();
MongodbHelpers<Public> mon = new MongodbHelpers<Public>();
class1.colname = "名称";
class1.content = "内容";
var result = mon.Insert(class1);
11)git地址
http://git.oschina.net/songjingli/MongodbDemo