C# 操作 MongoDB的示例demo

 更新时间:2020年12月07日 09:47:15   作者:chesterdotchen  
这篇文章主要介绍了C# 操作 MongoDB的示例demo,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下

今项目使用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")
      };

      //根据查找多个条件筛选集合
      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小时,是由于默认写入的是世界标准时间,可在时间类型属性上添加

[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime createTime { get; set; }

的特性,这样取出来之后就是北京时间。

以上就是C# 操作 MongoDB的示例demo的详细内容,更多关于C# 操作 MongoDB的资料请关注脚本之家其它相关文章!

相关文章

  • windows下C#定时管理器框架Task.MainForm详解

    windows下C#定时管理器框架Task.MainForm详解

    这篇文章主要为大家详细介绍了windows下C#定时管理器框架Task.MainForm的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • C#怎样实现文件下载断点续传

    C#怎样实现文件下载断点续传

    这篇文章主要介绍了C#怎样实现文件下载断点续传,对断点续传感兴趣的同学,可以参考下
    2021-04-04
  • C#中的Timer和DispatcherTimer使用实例

    C#中的Timer和DispatcherTimer使用实例

    这篇文章主要介绍了C#中的Timer和DispatcherTimer使用实例,本文分别给出它们的使用代码实例,需要的朋友可以参考下
    2015-01-01
  • C#实现语音视频录制-附demo源码

    C#实现语音视频录制-附demo源码

    在很多语言视频软件系统中,经常有将实时的音频或者是视频录制为文件保存到磁盘空间的需求,本篇给大家讲C#实现语音视频录制-附demo源码,感兴趣的朋友一起来学习吧
    2015-08-08
  • C#中List用法介绍详解

    C#中List用法介绍详解

    本文详细讲解了C#中List用法介绍,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • C#递归算法之打靶算法分析

    C#递归算法之打靶算法分析

    这篇文章是对打靶算法分析,比较简单,但逻辑一定要清楚,分析问题的方法一定要准确,有需要的朋友可以参考一下。
    2016-06-06
  • C#实现文件与Base64的相互转换

    C#实现文件与Base64的相互转换

    本文主要介绍了C#实现文件与Base64的相互转换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • winform简单缓存类实例

    winform简单缓存类实例

    这篇文章主要介绍了winform简单缓存类,涉及C#缓存使用技巧,非常简单实用,需要的朋友可以参考下
    2015-09-09
  • C# WinForm 登录界面的图片验证码(区分大小写+不区分大小写)

    C# WinForm 登录界面的图片验证码(区分大小写+不区分大小写)

    这篇文章主要介绍了C# WinForm 登录界面的图片验证码(区分大小写+不区分大小写),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • C#中的委托Delegate

    C#中的委托Delegate

    这篇文章介绍了C#中的委托Delegate,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05

最新评论