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. ...
随机推荐
- QT TCP文件上传服务器
利用QT做为client端,纯C语言做为server端,利用tcp协议,实现client端向server端传递文件 Linux服务器端 //头文件 #include <stdio.h> # ...
- 关于开发中 hosts 文件的修改
这篇文章只是给自己做个笔记吧. 最近的工作经常要改 hosts 文件(C:\Windows\System32\drivers\etc\hosts),并且改完后不立即生效.小胡子哥 提到: 因为服务器设 ...
- 初学git:用git bash往github push代码
对于我来说,最开始使用github主要是为了使用它的pages功能展示demo.其实这些都是用Github for Windows push上去的,图形化界面的客户端使用确实简单,但是逼格不够,好吧其 ...
- 关于Hellas和Greece
一直以来我就好奇,为什么希腊的中文名字“希腊”和英文名字”Greece”听起来都不像(就像“德国”不像“Germany”一样),而且,为什么在很多体育比赛中看到希腊运动员的衣服上都是“Hellas”, ...
- BroadcastReceiver之应用卸载和安装监听
首先创建一个类继承BroadcastReceiver,然后配置Manifest.xml <receiver android:name=".PackageAddRemove"& ...
- Ubuntu下安装支付宝安全控件
在淘宝购物时,安装支付宝安全控件.下载了一个文件.tar.gz(非常小的一个文件). tar -zxvf 解压之,只有一个aliedit.sh文件,运行这个文件就安装成功了,重启firefox就可以用 ...
- windows 内部预览版与迅雷极速版不配合
为了体验bash on ubuntu安装的预览版本,结果原来的迅雷极速版本无法成功下载文件,总是在最后一刻报错退出. 解决方法是: 下载安装迅雷9 哈哈哈哈,新版迅雷挺不错的,运行良好. ctrl^v ...
- 个人阅读作业——M1/M2总结
~ http://www.cnblogs.com/wx1306/p/4831950.html 在这篇博客中,我提出来一些关于软件工程的问题,但随着这一个学期的即将结束,以及我对软件开发的了解的深入,我 ...
- iOS开发小技巧--TableView中headerView的循环利用,以及自定义的headerView
一.首先要搞清楚,tableView中有两种headerView,一个是tableHeaderView,另一个是headerView.前者就一个;后者根据session决定个数 headerView的 ...
- 【POJ 2318】TOYS 叉积
用叉积判断左右 快速读入写错了卡了3小时hhh #include<cmath> #include<cstdio> #include<cstring> #includ ...