• 关于MongoDB在C#的使用


    参考链接:https://www.cnblogs.com/wangchuang/p/4518282.html

    内容详情(这里仅仅做笔记)

    Query.All("name", "a", "b");//通过多个元素来匹配数组
    Query.And(Query.EQ("name", "a"), Query.EQ("title", "t"));//同时满足多个条件
    Query.EQ("name", "a");//等于
    Query.Exists("type", true);//判断键值是否存在
    Query.GT("value", 2);//大于>
    Query.GTE("value", 3);//大于等于>=
    Query.In("name", "a", "b");//包括指定的所有值,可以指定不同类型的条件和值
    Query.LT("value", 9);//小于<
    Query.LTE("value", 8);//小于等于<=
    Query.Mod("value", 3, 1);//将查询值除以第一个给定值,若余数等于第二个给定值则返回该结果
    Query.NE("name", "c");//不等于
    Query.Nor(Array);//不包括数组中的值
    Query.Not("name");//元素条件语句
    Query.NotIn("name", "a", 2);//返回与数组中所有条件都不匹配的文档
    Query.Or(Query.EQ("name", "a"), Query.EQ("title", "t"));//满足其中一个条件
    Query.Size("name", 2);//给定键的长度
    Query.Type("_id", BsonType.ObjectId);//给定键的类型
    Query.Where(BsonJavaScript);//执行JavaScript
    Query.Matches("Title", str);//模糊查询 相当于sql中like  -- str可包含正则表达式

    具体使用案列:

    private static MongoDatabase _db_handel = MongoServer.Create(MongoDBConnStr).GetDatabase(DBName);  // 连接地址MongoDBConnStrDBName库名

    添加

    // 单个添加
    PBDS_Model PBDSModel = new PBDS_Model(); _db_handel.GetCollection(CollectionNames[3]).Insert(PBDSModel);
    // 批量添加
    _db_handel.GetCollection(CollectionNames[2]).InsertBatch(models);

    查询:

    List<string> SoolchList = new List<string>;  // 这里可存放多个包含的可能
    List<SubResultDatasT_Model> SubRDTModels = new List<SubResultDatasT_Model>();  // 要转换的模型
    List<IMongoQuery> IMQLists = new List<IMongoQuery>();  // 这个用来存放多个条件的临时集合
    IMongoQuery query = Query.EQ("TrainSystem", model.TrainSystem);  // 单字段
    IMQLists.Add(query);
    query = null;
    BsonArray _ba = new BsonArray();  // 单字段包含的多个值使用BasonArray
    _ba.AddRange(SoolchList);
    query = Query.In("UserID", _ba);  // 这里不要使用Query.All我感觉应该和Query.In效果一直,但是结果不是的。搞明白的可以留言评论一下,我好学习学习
    IMQLists.Add(query);
    query = null;
    query = Query.And(IMQLists);  // 且条件
    var TRAllDatas = _db_handel.GetCollection(CollectionNames[1]).Find(query).SetLimit(100).SetSkip(10); // 进行分页查询,SetLimit限制查询数量,SetSkip跳过多少条
    string TTRAllDatas = RemoveID(TRAllDatas.ToJson()); // 处理数据
    SubRDTModels= JsonConvert.DeserializeObject<List<SubResultDatasT_Model>>(TTRAllDatas); // 解析成模型

     更新:

    1.这种方式存在效率问题,需要先查找出来在进行更新

    #region 查找出来对应的集合
    IMongoQuery query = Query.EQ("GUID", GUID);
    var TRAllDatas = _db_handel.GetCollection(CollectionNames[1]).Find(query);
    SubResultDatasT_Model SubRDTModel
    = new SubResultDatasT_Model();
    string TTRAllDatas = RemoveID(TRAllDatas.ToJson());
    if (string.IsNullOrEmpty(TTRAllDatas))
    {
      _ai_dal.Edit_TrainRecord_DAL(GUID);
      return;
    }
    #endregion
    #region 更新对应的数据并更新MongoDB库
    SubRDTModel
    = JsonConvert.DeserializeObject<SubResultDatasT_Model>(TTRAllDatas);
    SubRDTModel.IsNeedRemind
    = 0;
    BsonDocument _bd
    = BsonExtensionMethods.ToBsonDocument(SubRDTModel);
    query
    = Query.EQ("NewAutoID", SubRDTModel.NewAutoID);
    _db_handel.GetCollection(CollectionNames[
    1]).Update(query, new UpdateDocument(_bd));
    #endregion

    2.像数据库一样直接更新字段:(这种方式存在返回值问题,目前获取到的WriteConcernResult返回全为null)

    IMongoQuery query = Query.EQ("NewAutoID", "20db1d3ff3284908a195677295636513");
    _db_handel.GetCollection("ColJR").Update(query, Update.Set("Score", 80).Set("PreIntegration", 50));

    删除

    _db_handel.GetCollection(CollectionNames[0]).RemoveAll();  // 删除所有
    // 部分删除
    IMongoQuery query = Query.EQ("NewAutoID", SubRDTModel.NewAutoID);
    _db_handel.GetCollection(CollectionNames[1]).Remove(query);
  • 相关阅读:
    java:线上问题排查常用手段
    去fastjson笔记
    如何让java中的注释代码执行?
    spring中aop不生效的几种解决办法
    mysql事务隔离级别/脏读/不可重复读/幻读详解
    业务系统-全球化多时区的解决思路
    mysql虚拟列(Generated Columns)及JSON字段类型的使用
    freeswitch笔记(7)-放音控制
    JVM问题典型案例定位学习
    freeswitch笔记(6)-会议功能简介
  • 原文地址:https://www.cnblogs.com/namejr/p/13335924.html
Copyright © 2020-2023  润新知