MongoDB: CURD操作
>> 创建:
·db.foo.insert({"bar":"baz"}) //如果文档中没有"_id"键会自动增加一个
·db.foo.batchInsert([{"_id":0},{"_id":2}])
//只适用将多个文档插入到一个集合,不能单次请求中多个文档批量插入多个集合中
// 当前Mongo能接收最大的消息长度是48M
# 插入校验
·每个文档必须小于16M (Object.bsonsize(doc)查看bson大小)
>> 删除:
·db.foo.remove()//删除所有集合中的文档,但是不删除集合本身
·db.foo.remove({"opt":true})
·db.foo.drop()//删除整个集合(慎用) >> 更新:
# 基本更新:
·db.foo.update() //更新的过程中必须保证同一个文档键不能重复 # 修改器:
·db.foo.update({"game":"game"},{"$inc":{"score":1000}}) //$inc 是对某个字段的值进行增加和减少操作,适用于数值类型
·db.foo.update({"_id":1},{"$set":{"fav":"fav"}}) //修改非数值类型的字段的值
·db.foo.update({"_id":1},{"$unset":{"fav":1}}) //删除这个键
+ 数组修改器: + 添加元素:
·db.foo.update({"title":"blog"},{"$push":{"comments":"comments"}}) //在文档中添加一个元素
·db.foo.update({"title":"blog"},{"$push":{"comments":{"$each":[1,3,5]}})//添加多个值
·db.foo.update({"title":"blog"},{"$push":{"comments":{"$each":[1,3,5],"$slice":-10}})
//设置添加元素的数量,"$slice"值为负整数
·db.foo.update({"title":"blog"},{"$push":{"comments":{"$each":[1,3,5],"$slice":-10,"$sort":{"rating":-1}}})
//"$slice","$sort"与"$push"配合使用,必须使用"$each" # 数组操作:
·db.papers.update({{"authors":{"$ne":"richie"}},{"$push":{"authors":richie}}}) //$ne先查询数组中是否存在这个元素
·db.users.update({"_id":1},{"$addToSet":{"emails":"joe@gmial.com"}}) //避免插入重复的值
·db.users.update({"_id":1},{"$addToSet":{"emails":{"$each":["joe@gmial.com","job@gmial.com"]}}}) ·db.blog.update({"post":post_id},{"$inc":{"comments.0.votes":1}})//基于数组的下标位置修改
·db.blog.update({"commetns.author":"john"},{"$set":{"comments.$.author":"jim"}}) # 删除元素:
·db.lists.update{{},{"$pull":{"todo":"laundry"}}} //指定条件删除某个元素,会将所有匹配的值删除
·{"$pop":{"key":1}}//从数组末尾删除
·{"$pop":{"key":-1}} //从数组头部删除 >> 特殊更新:
·db.blog.update({"url":"/blog"},{"$inc":{"pageviews":1},true})//true如果没有找到更新条件的文档则创建
·db.users.update({},{"$setOnInsert":{"createdAt":new Date()},true}) //创建时赋值,之后所有的更新操作都不会改变 # save(doc)函数:如果文档存在就更新文档,如果不存在就创建 >> 更新多个文档:??
·findAndModify => 写入安全: >> 查询
# 基本查询:
·db.users.find({},{"username":1,"email":1,"_id": 0}) //指定某个字段显示 # 带条件的查询:
内层文档:"$lt"、"lte"、"$gt"、"gte" 对应<,<= ,> ,>=
外层文档:"$and","$or","$nor"
·db.users.find({"registered":{"$lt":start}})
·db.users.find({"username":{"$ne":"joe"}}) 查询所有名字不为joe的用户 ·db.raffle.find({"ticket":{"$in":[1,2,3]}}) //一个键与多个值匹配
·db.raffle.find({"$or":[{"ticket":{"$in":[1,3,5]}},{"winner":true}]}) //or查询 ·db.users.find({"id_num":{"$mod":[5,1]}})
·db.users.find({"id_num":{"$not":{"$mod":[5,1]}}}) => 一个键可以任意组合多个条件,但是一个键不能对应多个更新修改器 # 特定类型查询:
·db.c.find({"z":{"$in":[null],"$exists":true}}) //null查询
·db.users.find({"name":/joe/i})//正则表达式查询 # 数组查询:
·db.food.find({"friut":{$all:["apple","banana"]}})
·精确匹配对于数组依赖顺序
MongoDB: CURD操作的更多相关文章
- MongoDB的安装及CURD操作
MongoDB的下载地址:http://www.mongodb.org/downloads MongoDB有32bit和64bit两个版本,32bit只能存放2GB数据.我们选择64bit版进行下载. ...
- windows下mongodb基础玩法系列二CURD操作(创建、更新、读取和删除)
windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...
- MongoDB的一些CURD操作
MongoDB的一些增删改查命令操作: 官方文档参考 https://docs.mongodb.com/manual/reference/method/ https://docs.mongodb.c ...
- MongoDB安装、CURD操作、使用场景分析总结(1)
NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL".非关系型的数据存储 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 ...
- MongoDB学习笔记~自己封装的Curd操作(按需更新的先决条件)
回到目录 我们上一讲中介绍了大叔封装的Mongo仓储,其中介绍了几个不错的curd操作,而对于按需更新内部子对象,它是有条件的,即你的子对象不能为null,也就是说,我们在建立主对象时,应该为子对象赋 ...
- MongoDB查询操作限制返回字段的方法
这篇文章主要介绍了MongoDB查询操作限制返回字段的方法,需要的朋友可以参考下 映射(projection )声明用来限制所有查询匹配文档的返回字段.projection以文档的形式列举结果集中 ...
- Laravel框架数据库CURD操作、连贯操作使用方法
Laravel框架数据库CURD操作.连贯如何来操作了这个操作性是非常的方便简单了我们在这里来为各位介绍一篇相关的教程,具体的细节步骤如下文介绍. Laravel是一套简洁.优雅的PHP Web开 ...
- php对xml文件进行CURD操作
XML是一种数据存储.交换.表达的标准: - 存储:优势在于半结构化,可以自定义schema,相比关系型二维表,不用遵循第一范式(可以有嵌套关系): - 交换:可以通过schema实现异构数据集成: ...
- EasyUI-datagrid数据展示+MongoDB数据操作
使用EasyUI-datagrid进行数据展示:进行添加,修改,删除操作逻辑代码,数据源来自MongoDB. 一.新建SiteInfo控制器,添加Index页面:http://www.cnblogs. ...
随机推荐
- noi题库(noi.openjudge.cn) 1.9编程基础之顺序查找T01——T05
T01 查找特定元素的值 描述 在一个序列(下标从1开始)中查找一个给定的值,输出第一次出现的位置. 输入 第一行包含一个正整数n,表示序列中元素个数.1 <= n <= 10000.第二 ...
- c++多重继承小结
如果一个类从两个不同的类里继承两个同名的成员,则需要在派生类中使用类限定符来区分他们. 即在从A和B派生出来的c类中使用a::Show()和B::Show()来区分从这两个类那里继承的show()方法 ...
- SQLite安装、编译与应用
什么是 SQLite SQLite是一款轻量级的.基于文件的嵌入式数据库,实现自包容.零配置.支持事务的SQL数据库引擎.与其他数据库管理系统不同,SQLite 的安装和运行非常简单,在大多数情况下, ...
- MongoDB数据库GroupBy查询使用Spring-data-mongondb的实现
以前用MongoDB数据库都是简单的查询,直接用Query就可以,最近项目中用到了分组查询,完全不一样.第一次遇到,搞了好几天终于有点那意思了. 先上代码: import java.math.BigD ...
- 东大OJ-1544: GG的战争法则
题目描述 你在桥上看风景 看风景的人在楼上看你 明月装饰了你的窗子 你装饰了我的梦 这是GG在长坂坡发出的感叹. 三年前GG莫名的穿越到了三国时期,在这三年里他看尽了各种杀戮,心里早已麻木.GG他渴望 ...
- memcached安装配置
简述: memcached,开源的分布式缓存数据系统.高性能的NOSQL . Linux 一.环境配置与安装 01.编译准备环境 yum install -y gcc make cmake autoc ...
- MAC中查看Python安装路径
[admin@admindeMac:~]which Python /usr/bin/Python
- java多态实现原理
众所周知,多态是面向对象编程语言的重要特性,它允许基类的指针或引用指向派生类的对象,而在具体访问时实现方法的动态绑定.C++ 和 Java 作为当前最为流行的两种面向对象编程语言,其内部对于多态的支持 ...
- 2016年GitHub 排名前 100 的安卓、iOS项目简介(收藏)
排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不相关的项目, 所以排名并不具备任何官方效力, 仅供参考学习, 方便初学者 ...
- zabbix 用 LLD 完全自动化监控 Oracle
文章转载自:http://mp.weixin.qq.com/s?__biz=MzA3MzYwNjQ3NA==&mid=2651296856&idx=1&sn=2bdf78071 ...