C# 操作 MongoDB的示例demo
今項目使用Mongodb,C#操作MongoDB使用MongoDB.Driver.dll庫(Nuget),寫了個小Demo,如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using MongoDB.Driver;
namespace MongoBase
{
internal class MongoBase
{
private static string _connStr = "mongodb://root:123456@127.0.0.1:27017";
private static string _dbName = "test";
private static MongoUrl url = new MongoUrl(_connStr);
private static MongoClient client = new MongoClient(url);
public static IMongoDatabase db = client.GetDatabase(_dbName);
}
public class MongoHelper<TEntity>
{
public string Name => typeof(TEntity).Name;
public IMongoCollection<TEntity> Collection => MongoBase.db.GetCollection<TEntity>(Name);
public List<TEntity> Queryable => Collection.AsQueryable().ToList();
public FilterDefinitionBuilder<TEntity> Filter => Builders<TEntity>.Filter;
public UpdateDefinitionBuilder<TEntity> Update => Builders<TEntity>.Update;
public ProjectionDefinitionBuilder<TEntity>Projection=> Builders<TEntity>.Projection;
}
}
using System;
using System.Collections.Generic;
using System.Text;
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
namespace MongoBase
{
public class EntityBase
{
public EntityBase()
{
_id = ObjectId.GenerateNewId();
createTime = DateTime.Now;
isDelete = false;
id = _id.ToString();
}
[BsonId]
public ObjectId _id { get; set; }
public string id { get; set; }
public DateTime? createTime { get; set; }
public bool? isDelete { get; set; }
}
}
using MongoBase;
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
namespace ConsoleApp5
{
internal class Video : EntityBase
{
public string Title { get; set; }
public string Category { get; set; }
public int Minutes { get; set; }
public string Comments { get; set; }
}
}
using System;
using System.Collections.Generic;
using MongoBase;
using MongoDB.Bson;
using MongoDB.Driver;
using MongoDB.Driver.Linq;
namespace ConsoleApp5
{
class Program
{
static void Main(string[] args)
{
MongoHelper<Video> videoHelper = new MongoHelper<Video>();
//新增
videoHelper.Collection.InsertOne(new Video()
{
Title = "ggg"
});
//查找集合
var list = videoHelper.Collection.Find(videoHelper.Filter.Eq(e => e.Category, "Horror")).ToList();
list = videoHelper.Collection.Find(videoHelper.Filter.Eq(e => e.Title, "ggg")).ToList();
//方式一:拼接查找條件
List<FilterDefinition<Video>> listFilter = new List<FilterDefinition<Video>>()
{
videoHelper.Filter.Eq(e=>e.Minutes,118),
videoHelper.Filter.Eq(e=>e.Title,"The Perfect Developer")
};
//根據(jù)查找多個條件篩選集合
list = videoHelper.Collection.Find(videoHelper.Filter.And(listFilter)).ToList();
//方式二:拼接查找條件
var filter = videoHelper.Filter.Eq(e => e.Title, "cys") & videoHelper.Filter.Eq(e => e.Category, "cys");
list = videoHelper.Collection.Find(filter).ToList();
//拼接更新字段
var updateDefinition = new List<UpdateDefinition<Video>>()
{
videoHelper.Update.Set(e=>e.Title, "cys"),
videoHelper.Update.Set(e=>e.Category, "cys")
};
//按照條件更新
videoHelper.Collection.UpdateMany(videoHelper.Filter.And(listFilter),
videoHelper.Update.Combine(updateDefinition));
//刪除
videoHelper.Collection.DeleteOne(videoHelper.Filter.Eq(e => e.Title, "Lost In Frankfurt am Main"));
//獲取某個字段
filter = videoHelper.Filter.Eq(e => e.Title, "ggg");
var bson = videoHelper.Collection.Find(filter).Project(videoHelper.Projection.Include(e => e.Title).Exclude(e => e._id)).FirstOrDefault();
}
}
}
注:時間類型的屬性,存入MongoDB后會比北京時間少8小時,是由于默認(rèn)寫入的是世界標(biāo)準(zhǔn)時間,可在時間類型屬性上添加
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime createTime { get; set; }
的特性,這樣取出來之后就是北京時間。
以上就是C# 操作 MongoDB的示例demo的詳細(xì)內(nèi)容,更多關(guān)于C# 操作 MongoDB的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
c# WPF中通過雙擊編輯DataGrid中Cell的示例(附源碼)
這篇文章主要介紹了c# WPF中通過雙擊編輯DataGrid中Cell的示例(附源碼),幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-03-03
C# Entity Framework中的IQueryable和IQueryProvider詳解
這篇文章主要介紹了C# Entity Framework中的IQueryable和IQueryProvider詳解,本文使用實例分析這兩個接口的內(nèi)部實現(xiàn),需要的朋友可以參考下2015-01-01
c#中的浮點(diǎn)型轉(zhuǎn)整形的舍取 四舍五入和銀行家舍入實現(xiàn)代碼
c#中的浮點(diǎn)型轉(zhuǎn)整形的舍取 四舍五入和銀行家舍入實現(xiàn)代碼,學(xué)習(xí)c#的朋友可以參考下2012-03-03
Datagridview使用技巧(9)Datagridview的右鍵菜單
這篇文章主要為大家詳細(xì)介紹了Datagridview使用技巧,Datagridview的右鍵菜單,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05

