.net core3.1中使用 **MongoDB.Driver** 實現基礎的增刪改查操作(含分頁)

.net core3.1中使用 MongoDB.Driver 實現基礎的增刪改查操作(含分頁)。

模型

public class Person
{
    public ObjectId Id { get; set; }
    //[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
    public DateTime Created { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public string JumpUrl { get; set; }
    public int ReadingNum { get; set; }
    public PersonType Type { get; set; }
}
public enum PersonType
{
    類型1 = 1,
    類型2 = 2,
}

增刪改查操作

MongoDB操作鏈接及相關字段:

 private static readonly MongoClient client = new MongoClient("mongodb://admin:[email protected]:27017");
 private static readonly string dbName = "test";
 private static readonly string collectionName = "person";
 private static readonly IMongoDatabase database = client.GetDatabase(dbName);
 private static readonly IMongoCollection<Person> collection = database.GetCollection<Person>(collectionName);

初始化集合:

public static void Init()
{
    //創建集合
    var listCollections = database.ListCollectionNames().ToList();
    if (!listCollections.Contains(dbName))
        database.CreateCollection(collectionName);
}

寫入:

public static void Write()
{
    var database = client.GetDatabase(dbName);
    var collection = database.GetCollection<Person>(collectionName);
    collection.InsertOne(new Person
    {
        Title = "孫治民",
        Description = "今天下着雨~,我的心情真開心~",
        Created = DateTime.Now,
        JumpUrl = "hospital.xiayeyun.com",
        ReadingNum = 0,
        Type = PersonType.類型2
    });
}

查詢:

public static void Read()
{
    #region 方式一
    //var list = collection.Find(x => x.Title == "孫治民").Skip(0).Limit(10).SortByDescending(x => x.Created).ToList(); 
    #endregion
    #region 方式二
    var filterDic = new Dictionary<string, object> { { "Title", "孫治民" } };
    var filter = new BsonDocument(filterDic);
    var list = collection.Find(filter).Skip(0).Limit(10).SortByDescending(x => x.Created).ToList();
    #endregion
}

更新:

public static void Update(ObjectId id)
{
    var doc = collection.Find(x => x.Id == id).Skip(0).Limit(1).ToList();
    if (!doc.Any())
        return;
    var updateBuilder = Builders<Person>.Update;

    #region 方式一,動態添加需要更新的字段
    //var updates = new List<UpdateDefinition<Person>>();
    //updates.Add(updateBuilder.Set(x => x.Title, "update"));
    //updates.Add(updateBuilder.Set(x => x.Created, DateTime.Now));
    //updates.Add(updateBuilder.Set(x => x.Description, "update test"));
    //var update = updateBuilder.Combine(updates);
    //collection.UpdateOne(x => x.Id == id, update); 
    #endregion

    #region 方式二,一次更新多個固定字段
    var update = updateBuilder.Set(x => x.Title, "update2")
    .Set(x => x.Created, DateTime.Now)
    .Set(x => x.Description, "update2 test2");
    #endregion
    UpdateResult result = collection.UpdateOne(x => x.Id == id, update);
}

刪除:

public static void Delete(ObjectId id)
{
    DeleteResult result = collection.DeleteOne(x => x.Id == id);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章