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")
      };
 
      //根据查找多个条件筛选集合
      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后会比北京时c#教程间少8小时,是由于默认写入的是世界标准时间,可在时间类型属性上添加

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

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

以上就是C# 操作 MongoDB的示例demo的详细内容

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值