MongoDB学习笔记~自己封装的Curd操作(查询集合对象属性,更新集合对象)

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

我不得不说,mongodb官方驱动在与.net结合上做的不是很好,不是很理想,所以,我决定对它进行了二次封装,这是显得很必然了,每个人都希望使用简单的对象,而对使用复杂,麻烦,容易出错的对象尽而远之,这是正常的,人都是喜欢懒惰的,就像程序员,也是一样,喜欢偷懒,可能说,偷懒是程序员进步的一个标志,呵呵.

下面我是总结的几种标准的操作,主要是针对我封装的官方驱动而方的(MongoOfficialRepository<TEntity>)

1  插入对象和子对象

        /// <summary>
        /// 添加对象
        /// </summary>
        static public void Insert()
        {
            List<Person> list = new List<Person>();
            for (int i = 0; i < 10; i++)
            {
                //添加新对象

                list.Add(new Person
                {
                    Address = new Address
                    {
                        City = "北京",
                        District = "鸾翔凤集",
                        Province = "luanxian",
                    },
                    AddList = new List<Address>
                {
                 new Address
                 {
                    Seconds=1,
                    City = "湖北",
                    District = "鸾翔凤集",
                    Province = "luanxian",
                 },
                  new Address
                 {
                    Seconds=1,
                    City = "湖南",
                    District = "小区",
                    Province = "luanxian",
                 }
                },
                    Age = 35,
                    Birthday = DateTime.Now,
                    LastContact = DateTime.Now,
                    Name = "wangwu"
                });
            }
            repository1.Insert(list);
        }

2 更新对象和子对象集合元素,这是非常不错的功能,对于没有必要更新的记录,可以不去为它赋值

        /// <summary>
        /// 集合查询
        /// </summary>
        static public void Update()
        {
            repository1.Update<Person>(i => new Person
              {
                  Id = "556bfd1b2683c82060c2edd0",
                  AddList = new List<Address>
                  {
                    new Address
                    {
                      Id = "556bfd1b2683c82060c2edd3",
                      City = "占占大师123",
                      District = "鸾翔凤集",
                      Seconds=2
                    }
                 }
              });
        }

3 分页,多字段查询和排序,这是项目开发中用的最多的东西了,写了个标准的给大家参考

        /// <summary>
        /// 分页,排序,查询
        /// </summary>
        static public void Select()
        {
            //排序和检索
            var m1 = repository1.GetModel(new
            {
                Address = new
                {
                    City = "北京"
                },
                AddList = new
                {
                    Seconds = 1
                }
            }, new { Name = OrderType.Desc }, 1, 20);

4 分组,对于需要按着按些字段进行聚合(统计,求和,总数,最大值,最小值等),及多条件查询,这里有不错的实例

        /// <summary>
        /// 分组
        /// </summary>
        static public PagedList<Person> Group(string keyword, int? age, int page)
        {
            Specification<Person> spec = new TrueSpecification<Person>();

            //过滤
            if (!string.IsNullOrWhiteSpace(keyword))
            {
                spec &= new DirectSpecification<Person>(i => i.Name == keyword);
            }

            if (age.HasValue)
            {
                spec &= new DirectSpecification<Person>(i => i.Age == age);
            }

            //分组
            var linq = from data1 in repository1.GetModel().Where(spec.SatisfiedBy())
                       group data1 by new
                       {
                           data1.Id,
                           data1.Name
                       } into g
                       select new Person
                       {
                           Id = g.Key.Id,
                           Name = g.Key.Name,
                           Total = new Total
                           {
                               Count = g.Count(),
                               Max = g.Max(i => i.Age),
                           }

                       };
            return new PagedList<Person>(linq, page, 10);
        }

OK,以上是针对我的MongoDB仓储进行的一些二次说明,感觉还是比较有必要的,呵呵.

本文转自博客园张占岭(仓储大叔)的博客,原文链接:MongoDB学习笔记~自己封装的Curd操作(查询集合对象属性,更新集合对象),如需转载请自行联系原博主。

目录
相关文章
|
NoSQL MongoDB 数据库
MongoDB 删除集合
10月更文挑战第14天
383 1
|
NoSQL MongoDB
MongoDB入门-MongoDB的CURD语句练习
这篇文章提供了MongoDB的CURD操作的练习,涵盖了插入、查询、更新和删除数据的基本命令,并通过具体示例展示了如何在MongoDB中执行这些操作。
127 2
|
9月前
|
NoSQL 关系型数据库 MongoDB
微服务——MongoDB常用命令——集合操作
本节主要介绍MongoDB中的集合操作,包括显式与隐式创建集合的方法。显式创建使用`db.createCollection(name)`,需遵循命名规范(如不能以&quot;system.&quot;开头或包含`\0`字符)。隐式创建则通过直接向不存在的集合插入文档实现,更为常用。此外,还介绍了集合删除方法`db.collection.drop()`及其返回值规则,帮助用户管理数据库中的集合资源。
323 0
|
12月前
|
存储 NoSQL MongoDB
.NET MongoDB数据仓储和工作单元模式封装
.NET MongoDB数据仓储和工作单元模式封装
193 15
|
缓存 NoSQL MongoDB
|
存储 NoSQL MongoDB
MongoDB 创建集合
10月更文挑战第13天
231 1
|
存储 NoSQL 数据管理
揭秘MongoDB时间序列集合:这个超级功能将如何彻底改变你的数据管理?
【8月更文挑战第8天】时间序列数据记录随时间变化的信息,在数据库管理中至关重要。MongoDB自4.0版起引入时间序列集合,专为这类数据优化存储与查询。通过问答形式介绍其特点:自动数据过期、高效存储机制及快速查询操作。创建时需指定时间字段及可选元数据字段。支持设置数据过期时间,采用粗粒度索引减少I/O操作。查询时可通过时间范围筛选数据,并利用聚合框架进行数据分析。随着实时分析需求的增长,时间序列集合的应用将更加广泛。
772 1
|
DataWorks NoSQL fastjson
DataWorks操作报错合集之DataX进行MongoDB全量迁移的过程中,DataX的MongoDB Reader插件在初始化阶段找不到Fastjson 2.x版本的类库,该怎么办
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
存储 NoSQL Linux
【MongoDB】下载安装、指令操作
【MongoDB】下载安装、指令操作
497 1
|
分布式计算 DataWorks NoSQL
DataWorks操作报错合集之从MongoDB同步数据到MaxCompute(ODPS)时,出现报错,该怎么解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
DataWorks操作报错合集之从MongoDB同步数据到MaxCompute(ODPS)时,出现报错,该怎么解决

推荐镜像

更多