MongoDB学习笔记~自己封装的Curd操作(按需更新的先决条件)

回到目录

我们上一讲中介绍了大叔封装的Mongo仓储,其中介绍了几个不错的curd操作,而对于按需更新内部子对象,它是有条件的,即你的子对象不能为null,也就是说,我们在建立主对象时,应该为子对象赋一下初值,即new一下它,呵呵.

正确的mongo集合

对于赋过初值的子对象,在按需要更新时,有以下两种要注意一下

1 子对象的_id,如果已经存在,就更新它的值

2 子对象的_id,如果不存在,或者没有显示为_id赋值,则添加一条新的记录,即_id从新生成

而对于实体更新不存在这个问题,实体里的值会覆盖掉原表的值,下面看一下按需要更新的代码

            #region 按需更新
            repository1.Update<Person>(i => new Person
            {
                Id = "556d531e2683c818c86caddb",
                Address = new Address
                {
                    Id = "556d531e2683c818c86ca123",/*不加id(或者id没有在集合中存在)就是向列表添加一条元素,id存在则更新指定的元素*/
                    Province = "luanxian",
                    City = "111湖南占占大师",
                    District = "小区",
                    Seconds = 1
                },
                AddList = new List<Address>() {
                   new Address
                     {
                         /*不加id(或者id没有在集合中存在)就是向列表添加一条元素,id存在则更新指定的元素*/
                         Id="556d531e2683c818c86cadde",
                         Province = "luanxian",
                         City = "湖南占占大师ddd",
                         District = "小区",
                         Seconds = 1
                     }}
            });
            #endregion

对于整个更新,还是同样的问题,当然前提需要把表记录从库中获出来

           #region 完整更新
            var e1 = repository1.Find("556d531e2683c818c86caddb");
            e1.Name = "wet";
            e1.Address.City = "北京123";
            /*遍历原来的集合,批量赋值*/
            e1.AddList.ForEach(i =>
            {
                i.City = "大占占";
            });
            /*为每个对象分别赋值,不指定ID被自动生成*/
            e1.AddList = new List<Address> {
            new Address{City="占占1"},
            new Address{City="占占2"}
            };
            repository1.Update(e1);
            #endregion

对于MonoDB我们还需要继续去探索,研究...

回到目录

时间: 2024-08-02 01:42:56

MongoDB学习笔记~自己封装的Curd操作(按需更新的先决条件)的相关文章

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

回到目录 我不得不说,mongodb官方驱动在与.net结合上做的不是很好,不是很理想,所以,我决定对它进行了二次封装,这是显得很必然了,每个人都希望使用简单的对象,而对使用复杂,麻烦,容易出错的对象尽而远之,这是正常的,人都是喜欢懒惰的,就像程序员,也是一样,喜欢偷懒,可能说,偷懒是程序员进步的一个标志,呵呵. 下面我是总结的几种标准的操作,主要是针对我封装的官方驱动而方的(MongoOfficialRepository<TEntity>) 1  插入对象和子对象 /// <summa

[Spring Data MongoDB]学习笔记--MongoTemplate查询操作

查询操作主要用到两个类:Query, Criteria 所有的find方法都需要一个query的object. 1. 直接通过json来查找,不过这种方式在代码中是不推荐的. BasicQuery query = new BasicQuery("{ age : { $lt : 50 }, accounts.balance : { $gt : 1000.00 }}"); List<Person> result = mongoTemplate.find(query, Perso

MongoDB学习笔记~对集合属性的操作

回到目录 $unset清除元素 请注意在单个数组元素上使用$unset的结果可能与你设想的不一样.其结果只是将元素的值设置为null,而非删除整个元素.要想彻底删除某个数组元素,可以用$pull 和$pop操作符. $addToSet和$push的区别 该两者的功能都是给数组添加一个值.但是两者之间有区别,$addToSet要添加的值如果不存在才进行添加操作,但是push只添加一个值:例如: tags = [“zzl”,”dudu”] 如果执行db.collection.update({},{$

mongodb 学习笔记 02 -- CURD操作

mongodb 学习笔记 02 – CURD操作 CURD代表创建(Create).更新(Update).读取(Read)和删除(Delete)操作 创建库 直接 use 库名 然后创建collection 就可以创建库 创建collecion db.createCollection("collectionName") 隐式创建collection db.collectionName.insert({xxxxxx}) 删除collection db.collectionName.dro

[Spring Data MongoDB]学习笔记--MongoTemplate插入修改操作

插入操作: 直接给个例子 import static org.springframework.data.mongodb.core.query.Criteria.where; import static org.springframework.data.mongodb.core.query.Criteria.query; … Person p = new Person("Bob", 33); mongoTemplate.insert(p);//还可以多加一个参数,来提供collectio

Node.js学习笔记(3) - 简单的curd

这个算是不算完结的完结吧,前段时间也是看了好久的Node相关的东西,总想着去整理一下,可是当时也没有时间: 现在看来在整理的话,就有些混乱,自己也懒了,就没在整理,只是简单的记录一下 一.demo的简单介绍 这次demo,只涉及到简单的curd操作,用到的数据库是mongo,所以要安装mongo数据库,数据库连接驱动是mongoose: 当然关于mongo的驱动有很多,比如mongous mongoskin等:(详见http://cnodejs.org/topic/4f4ca8e0940ce2e

windows下mongodb基础玩法系列二CURD操作(创建、更新、读取和删除)

windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) 简单说几句 在mongodb中3元素:db(数据库).collection(集合).document(文档) 其中collection类似于数据库中的表,document类似于行,这样一来我们就将内容对比起来记忆学习了. 数据格式 MongoDB documents是BSON格式(一种类json的一种二进制形式的存

MongoDB学习笔记一:MongoDB的下载和安装

趁着这几天比较空闲,准备学习一下MongoDB数据库,今天就简单的学习了一些MongoDB的下载和安装,并创建了存储MongoDB的数据仓库.将自己今天学习到的写成博客分享给大家. 一.MongoDB的下载和安装 MongoDB的下载地址为:http://www.mongodb.org/ 1.进入官网的首页后,在首页的右上方单击Downloads连接,如图所示: 2.在页面中可以看到目前最新的版本和以前发布过的版本,这里选择最新版本,windows 32位的进行下载,文件的格式为ZIP格式的,单

Mongodb学习笔记

总结下这几天Mongodb学习笔记 /** * 获取MongoClient * @author xuyw * @email [email protected] * @param host * @param port * @return */ public static MongoClient getMongoClient(String host, int... port) { MongoClient mongoClient = null; int portlen = 0; try { if (p