你可以在mongodb官网下载该安装包,地址为:https://www.mongodb.com/download-center#community。
MonggoDB支持以下平台:
OS X 32-bit
OS X 64-bit
Linux 32-bit
Linux 64-bit
Windows 32-bit
Windows 64-bit
Solaris i86pc
Solaris 64
我们下载社区版本就行了
安装之后,在我们系统的服务中,会增加一个 MongoDB Server (MongoDB) 名称的服务

说明已经安装好了
基本操作
>use DATABASE_NAME //如果数据库不存在,则创建数据库,否则切换到指定数据库。
创建之后 查询所有数据库,不会显示,是因为没有数据,只要有一条数据,则会显示出来
>show dbs //显示所有数据库
>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为菜鸟教程
>db.dropDatabase() //删除当前数据库接下来说下如何在.NET 项目中使用MongoDb
1、创建一个项目MongoDbDemo

2、添加引用,一个驱动,一个json序列化相关


3、写代码
封装ContextDb.cs 数据库连接
using MongoDB.Driver;
namespace MongoDbDemo.MongoDb
{
/// <summary>
/// 数据库上下文
/// </summary>
public class ContextDb
{
/// <summary>
/// 数据库连接
/// </summary>
private static readonly string connStr = "mongodb://127.0.0.1:27017";//GlobalConfig.Settings["mongoConnStr"];
/// <summary>
/// 操作的数据库
/// </summary>
private static readonly string dbName = "demo1";//GlobalConfig.Settings["mongoDbName"];
/// <summary>
/// The database
/// </summary>
private static IMongoDatabase db = null;
/// <summary>
/// The lock helper
/// </summary>
private static readonly object lockHelper = new object();
/// <summary>
/// Prevents a default instance of the <see cref="ContextDb"/> class from being created.
/// </summary>
private ContextDb() { }
/// <summary>
/// 获取一个数据库对象
/// </summary>
/// <returns></returns>
public static IMongoDatabase GetDb()
{
if (db == null)
{
lock (lockHelper)
{
if (db == null)
{
var client = new MongoClient(connStr);
db = client.GetDatabase(dbName);
}
}
}
return db;
}
}
}封装BaseEntity.cs 基础实体类
using System;
using MongoDB.Bson;
namespace MongoDbDemo.MongoDb
{
/// <summary>
/// model
/// </summary>
public abstract class BaseEntity
{
public BaseEntity()
{
this.Id = ObjectId.GenerateNewId();
this.State = 0;
}
/// <summary>
/// id
/// </summary>
public ObjectId Id { get; set; }
/// <summary>
///状态 0正常 1禁用
/// </summary>
public int State { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 修改时间
/// </summary>
public DateTime UpdateTime { get; set; }
}
}封装MongoDbHelper.cs 操作类
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using MongoDB.Bson;
using MongoDB.Driver;
using MongoDbDemo.Util;
namespace MongoDbDemo.MongoDb
{
public class MongoDbHelper<T> where T : BaseEntity
{
#region 构造
/// <summary>
/// The database
/// </summary>
private IMongoDatabase db = null;
/// <summary>
/// The collection
/// </summary>
private IMongoCollection<T> collection = null;
/// <summary>
/// Initializes a new instance of the <see cref="MongoDbHelper{T}"/> class.
/// </summary>
public MongoDbHelper()
{
this.db = ContextDb.GetDb();
collection = db.GetCollection<T>(typeof(T).Name);
}
#endregion
#region 新增
/// <summary>
/// 新增一个实体
/// </summary>
/// <param name="entity">The entity.</param>
/// <returns></returns>
public MessageInfo Insert(T entity)
{
entity.CreateTime = DateTime.Now;
entity.UpdateTime = DateTime.Now;
collection.InsertOne(entity);
return new MessageInfo() { IsSuccess = true, Message = entity.Id.ToString() };
}
/// <summary>
/// 新增一个实体
/// </summary>
/// <param name="entity">The entity.</param>
/// <returns></returns>
public MessageInfo InsertAsync(T entity)
{
entity.CreateTime = DateTime.Now;
entity.UpdateTime = DateTime.Now;
collection.InsertOneAsync(entity);
return new MessageInfo() { IsSuccess = true, Message = entity.Id.ToString() };
}
/// <summary>
/// 批量添加
/// </summary>
/// <param name="list"></param>
public void InsertsAsync(List<T> list)
{
list.ForEach(t => t.CreateTime = DateTime.Now);
list.ForEach(t => t.UpdateTime = DateTime.Now);
collection.InsertManyAsync(list);
}
#endregion
#region 修改
/// <summary>
/// 修改实体的一个字段
/// </summary>
/// <param name="id">数据ID</param>
/// <param name="field">字段</param>
/// <param name="value">值</param>
public void ModifyAsync(string id, string field, string value)
{
FilterDefinition<T> filter = Builders<T>.Filter.Eq("Id", ObjectId.Parse(id));
UpdateDefinition<T> updated = Builders<T>.Update.Set(field, value);
collection.UpdateOneAsync(filter, updated);
}
/// <summary>
/// 更新一个实体
/// </summary>
/// <param name="entity"></param>
public void UpdateAsync(T entity)
{
try
{
T old = collection.Find(e => e.Id.Equals(entity.Id))?.FirstOrDefault();
if (old == null)
{
return;
}
foreach (var prop in entity.GetType().GetProperties())
{
object? newValue = prop.GetValue(entity);
object? 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.UpdateTime = DateTime.Now;
FilterDefinition<T> filter = Builders<T>.Filter.Eq("Id", entity.Id);
collection.ReplaceOneAsync(filter, old);
}
catch (Exception ex)
{
var aaa = ex.Message + ex.StackTrace;
throw;
}
}
#endregion
#region 删除
/// <summary>
/// 删除一个实体
/// </summary>
/// <param name="entity"></param>
public void Delete(T entity)
{
FilterDefinition<T> filter = Builders<T>.Filter.Eq("Id", entity.Id);
collection.DeleteOneAsync(filter);
}
/// <summary>
/// 删除一个实体
/// </summary>
/// <param name="id">The identifier.</param>
public void Delete(ObjectId id)
{
FilterDefinition<T> filter = Builders<T>.Filter.Eq("Id", id);
collection.DeleteOneAsync(filter);
}
/// <summary>
/// 根据Id批量删除
/// </summary>
public void Deletes(List<ObjectId> list)
{
FilterDefinition<T> filter = Builders<T>.Filter.In("Id", list);
collection.DeleteManyAsync(filter);
}
#endregion
#region 查询
/// <summary>
/// 根据id查询一条数据
/// </summary>
/// <param name="id">The identifier.</param>
/// <returns></returns>
public T QueryOne(string id)
{
return collection.Find(a => a.Id == ObjectId.Parse(id))?.FirstOrDefault();
}
/// <summary>
/// 根据条件查询一条数据
/// </summary>
/// <param name="express">The express.</param>
/// <returns></returns>
public T QueryOne(Expression<Func<T, bool>> express)
{
return collection.Find(express)?.FirstOrDefault();
}
/// <summary>
/// 查询多条数据
/// </summary>
/// <param name="express">The express.</param>
/// <returns></returns>
public List<T> QueryList(Expression<Func<T, bool>> express)
{
return collection.Find(express)?.ToList();
}
#endregion
}
}编写MessageInfo.cs 返回类
namespace MongoDbDemo.Util
{
public class MessageInfo
{
/// <summary>
///是否成功
/// </summary>
public bool IsSuccess { get; set; }
/// <summary>
///内容
/// </summary>
public string Message { get; set; }
}
}4、调用
using System;
using MongoDbDemo.Model;
using MongoDbDemo.MongoDb;
using MongoDbDemo.Util;
namespace MongoDbDemo
{
class Program
{
static void Main(string[] args)
{
DateTime strtime=DateTime.Now;
MongoDbHelper<UserInfo> db = new MongoDbHelper<UserInfo>();
for (int i = 0; i < 1000000; i++)
{
MessageInfo ret = db.Insert(new UserInfo
{
UserName = "王二"+i,
UserPass = "111222333"
});
}
DateTime enttime = DateTime.Now;
double num = (enttime - strtime).TotalSeconds;
Console.WriteLine(num);
Console.ReadKey();
}
}
}

川公网安备 51010702003150号
留下您的脚步
最近评论