insert仅仅是插入文档到集合中,如果记录不存在则插入,如果记录存在则忽略
save是在文档不存在时插入,存在时则是更新

下面代码不是为了演示insert和save的:
    foreach ($menses['page'] as $k => $value) {
                if(isset($value['id'])) {
                    if(isset($value['is_del']) && intval($value['is_del']) === 1) {
                        //删除操作
                        $pull_date = array("menses.page"=> array("id" => $value['id']));
                        $this->update($where,$pull_date,true,'$pull');
                    } else {
                        //修改
                        $set_page['menses.page.$.color'] = isset($value['color'])?intval($value['color']):0;
                        $set_page['menses.page.$.time']  = strval($value['time']);
                        if(isset($value['image']) && !empty($value['image'])) {
                            if($value['image'] == '') {
                                $set_page['menses.page.$.image'] = '';
                            } else {
                                $set_page['menses.page.$.image'] = strval($value['image']);
                            }
                        } else {
                            $set_page['menses.page.$.image'] = '';
                        }
                        //$set_page['menses.page.$.image']   = isset($value['image'])?strval($value['image']):'';
                        $set_page['menses.page.$.status']  = isset($value['status'])?intval($value['status']):0;
                        $set_page['menses.page.$.timeline'] = time();
                        $where_aa = array("cuid"=>$cuid,"date"=>$menses['date'],"menses.page.id" => $value['id']);
                        $update = $set_page;
                        $this->update($where_aa,$update,true,'$set');
                    }
                } else {
                    //添加
                    $add_page['id']    = (string)new MongoId();
                    $add_page['color'] = intval($value['color']);
                    $add_page['time']  = strval($value['time']);
                    if(isset($value['image']) && !empty($value['image'])) {
                        if($value['image'] == '') {
                            $add_page['image'] = '';
                        } else {
                            $add_page['image'] = strval($value['image']);
                        }
                    } else {
                        $add_page['image'] = '';
                    }
                    //$add_page['image']   = isset($value['image'])?strval($value['image']):'';
                    $add_page['status']  = isset($value['status'])?intval($value['status']):0;
                    $add_page['timeline'] = time();
                    $update = array("menses.page"=>$add_page);
                    $this->update($where,$update,true,'$push',true);
                }
            }

  

mongo的insert和save比较的更多相关文章

  1. mongodb insert()、save()的区别

    mongodb 的 insert().save()  ,区别主要是:若存在主键,insert()  不做操作,而save() 则更改原来的内容为新内容. 存在数据:  { _id : 1, " ...

  2. laravel insert 、save、update、create区别(总结二)

    1.insert:插入数据时,需要维护 created_at 和 updated_at字段, 2.save:无论插入或者更新,会自动维护,无需手动操作 //插入: public function st ...

  3. 关于python中使用mongodb模块,save和insert的小问题

    今天写python脚本的时候发现这样一个问题: import os , string , datetime ,pymongo; conn = pymongo.Connection("127. ...

  4. Mongo 专题

    什么是MongoDB ? MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为WEB应用提供 ...

  5. mongo 增删改查

    1. use foobar2. show dbs3. show collections4. db.system.indexes.find()5. db.persons.find()6. db.pers ...

  6. MongoDB - MongoDB CRUD Operations, Insert Documents

    MongoDB provides the following methods for inserting documents into a collection: db.collection.inse ...

  7. mongo基础---增删改查

    正文 MongoDB 是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.MongoDB是一个介于关系型数据库和非关系数据库之间的产品,是非关系数据 ...

  8. Mongo学习记录

    引子 最近做项目利用mongo记录的日志做数据统计.着了非关系型数据库的迷,于是乎买了本<MongoDB实战>学习了一番.记录一下学习笔记,共享之. 准备 我在自己的Linux服务器上装了 ...

  9. ListView控件的Insert、Edit和Delete功能第三部分(自我总结)

    1.刚开始在第一部分显示数据的时候出现如下错误: 修改: @Page 中的EnableEventValidation="false" 2.点击各个按钮没有反应. 修改:为page_ ...

随机推荐

  1. POJ C程序设计进阶 编程题#4:Tomorrow never knows?

    来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 甲壳虫的<A day ...

  2. 软件工程 speedsnail 第二次冲刺1次

    20150518 完成任务:划线第一天,能画出一天连续的红线: 遇到问题: 问题1 线是弯曲的 解决1 没有解决 明日任务: 将线画直

  3. mysql 5.7压缩包安装笔记

    转载请注明出处http://www.cnblogs.com/havedream/p/5075263.html 重装系统之后准备安装mysql,看到官网上有mysql 5.7.10可以下载就点了,然后就 ...

  4. 实现Win7远程桌面关机和重启

    通过远程桌面控制Win7系统时,菜单中没有关机和重启按钮, 1.方法1 关机 shutdown -s -t 0重启 shutdown -r -t 0 可以先打开运行框(Win+R键),输入上述命令即可 ...

  5. RecyclerView中显示不同的item

    测试代码: activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/an ...

  6. Source not found The JAR file …has no source attachment.

    问题描述如下: 解决方案: 选中你的项目方案,然后鼠标右键选择属性Properties,如下图: 然后依次按下图操作就完成了.

  7. 下一代NoSQL:最终一致性的末日

    相比关系型数据库,NoSQL解决方案提供了shared-nothing.容错和可扩展的分布式架构等特性,同时也放弃了关系型数据库的强数据一致性和隔离性,美其名曰:"最终一致性". ...

  8. WPF.UIShell UIFramework之自定义窗口的深度技术 - 模态闪动(Blink)、窗口四边拖拽支持(WmNCHitTest)、自定义最大化位置和大小(WmGetMinMaxInfo)

    无论是在工作和学习中使用WPF时,我们通常都会接触到CustomControl,今天我们就CustomWindow之后的一些边角技术进行探讨和剖析. 窗口(对话框)模态闪动(Blink) 自定义窗口的 ...

  9. @Async java 异步方法

    在spring 3中,@Async注解能让某个方法快速变为异步执行,马上来先DEMO上手下. 假如在网站的用户注册后,需要发送邮件,然后用户得到邮件确认后才能继续其他工作: 假设发送是一个很耗费时间的 ...

  10. Java Collections Source Code Series 1 --- 简介

    废话开篇 由于项目需要,需要对Java Collections进行系统地了解,所以在此记录下,方便自己,服务他人. Java Collections 简介 Java Collections 框架主要包 ...