mongo 语法 增删改查
1.增
db.collection.insert()与db.collection.save() 都是增加,区别:save()遇到相同_id后,则更新此_id数据。 而insert()则报错
> db.c1.find()
> db.c1.insert({_id:, name:'use001'});
> db.c1.insert({_id:, name:'use001'});
E11000 duplicate key error index: test.c1.$_id_ dup key: { : 1.0 }
> db.c1.save({_id:, name:'user002'});
> db.c1.save({_id:, name:'user003'});
> db.c1.find();
{ "_id" : , "name" : "user003" }
2.查
db.collection.find()//不带条件 查询所有
db.collection.find({name:'user007'})//条件查找 某些个
> db.c1.insert({name:'user11', age:, sex:'man'});
> db.c1.find({name:'user11'}, {name:});//find 第二个条件参数
{ "_id" : ObjectId("51e221897d2b412f74eefb68"), "name" : "user11" }
> db.c1.find({name:'user11'}, {name:, _id:});//_id都不要,0表示不获取,1表示要获取的
{ "name" : "user11" }
//条件表达式,$gt $gte $lt $lte $ne $mod取余 $in $nin $size数组元素个数 $exists:0,:1 $slice 正则匹配 魔术方法均在json内侧
> db.c1.find({age:{$gt:}}, {_id:});
{ "name" : "user6", "age" : }
{ "name" : "user7", "age" : }
{ "name" : "user8", "age" : }
{ "name" : "user9", "age" : }
> db.c1.find({name:/user1/i});//正则匹配 i 忽略大小写 符合perl规则
{ "_id" : ObjectId("51e229047d2b412f74eefb73"), "name" : "user1" }
{ "_id" : ObjectId("51e22b277d2b412f74eefb7c"), "name" : "user10" }
> db.c2.find({},{age:{$slice:2}});//$slice 在第二个参数框,做条件
{ "_id" : ObjectId("51e2324c7d2b412f74eefb7d"), "age" : [ 1111, 2222 ] }
> for(i=;i<;i++){
... db.c1.insert({name:'user'+i});}
> db.c1.find();
{ "_id" : ObjectId("51e22008866f862cf4662252"), "name" : "user1" }
{ "_id" : ObjectId("51e22008866f862cf4662253"), "name" : "user2" }
{ "_id" : ObjectId("51e22008866f862cf4662254"), "name" : "user3" }
{ "_id" : ObjectId("51e22008866f862cf4662255"), "name" : "user4" }
{ "_id" : ObjectId("51e22008866f862cf4662256"), "name" : "user5" }
{ "_id" : ObjectId("51e22008866f862cf4662257"), "name" : "user6" }
{ "_id" : ObjectId("51e22008866f862cf4662258"), "name" : "user7" }
{ "_id" : ObjectId("51e22008866f862cf4662259"), "name" : "user8" }
{ "_id" : ObjectId("51e22008866f862cf466225a"), "name" : "user9" }
//MONGO 语法 完全JS引擎
db.collection.findOne()
.sort({age:-1}) //降序
.skip().limit()
.count()默认<=>count(0) 区别于 count(1)
//post 为 数组 []
> db.c1.insert({name:'user1', post:[,,,,,,,,]});
> db.c1.find();
{ "_id" : ObjectId("51e225f17d2b412f74eefb72"), "name" : "user1", "post" : [ , , , , , , , , ] }
//$all 查找包含 [1,4,7,9] 元素的 post
> db.c1.find({post:{$all:[,,,]}});
{ "_id" : ObjectId("51e225f17d2b412f74eefb72"), "name" : "user1", "post" : [ , , , , , , , , ] }
//$or $nor 2个特殊魔术方法,方法体在json最左侧 而非右侧
> db.c1.find({$or:[{name:'user1'}, {name:'user4'}]});
{ "_id" : ObjectId("51e229047d2b412f74eefb73"), "name" : "user1" }
{ "_id" : ObjectId("51e229047d2b412f74eefb76"), "name" : "user4" }
distinct 取唯一值:
> db.c1.distinct('name');
[
"user1",
"user2",
"user3",
"user4",
"user5",
"user6",
"user7",
"user8",
"user9",
"user10"
]
游标:mysql类似
> var x = db.c1.find()
> x.hasNext();
true
> x.next();
{ "_id" : ObjectId("51e229047d2b412f74eefb73"), "name" : "user1" }
3.删
db.collection.remove();//删除所有文档集
db.collection.remove({name:'user001'});//删除指定
4.改
db.collection.update( criteria, objNew, upsert, multi )
criteria : update的查询条件,类似sql update查询内where后面的
objNew : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
upsert : 这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。 默认0
multi : mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。 默认0
> db.c3.find();
{ "_id" : ObjectId("51e23998b84469c6b5ccfa5f"), "name" : "user1", "age" : }
> db.c3.update({name:'user1'}, {$set:{name:'user22'}});//带$set参数
> db.c3.find();
{ "_id" : ObjectId("51e23998b84469c6b5ccfa5f"), "age" : , "name" : "user22" }
> db.c3.update({name:'user22'}, {name:'wowo'});//不带$set
> db.c3.find();
{ "_id" : ObjectId("51e23998b84469c6b5ccfa5f"), "name" : "wowo" }
一次性修改多条数据:
db.c3.update({name:'user1'}, {$set:{age:, sex:'boy'}});
$inc 如果不存在score, inc自动创建此score
> db.c4.insert({name:'wwwwwwww'});
> db.c4.update({},{$inc:{score:}}, , ); //0 1 // 1 1都可以
> db.c4.find();
{ "_id" : ObjectId("51e23da6b84469c6b5ccfa60"), "name" : "wwwwwwww", "score" : }
$unset 删除某一个字段
> db.c1.update({}, {$unset:{name:}}, , ); //对集合c1 下所有文档 进行 删除name元素的 操作
$push针对数组操作-添加一个元素 $pop-删除一个(1,表示删除最后一个。 -1表示删除第一个) $pushAll-添加一个或多个元素
> db.c5.update({}, {$push:{arr:[,,]}});
> db.c5.find();
{ "_id" : ObjectId("51e2421ecf05e15d315aa746"), "arr" : [ , , , [ , , ] ] }
$addToSet 数组操作 - 添加无重复的元素
//添加一个
> db.c5.update({arr:{$in:[,,]}}, {$addToSet:{arr:}}); //配额 $each 添加多个
> db.c5.update({arr:{$in:[1,2,3]}}, {$addToSet:{arr:{$each:[5,6,7,8]}}});
$pull 针对数组操作 - 删除指定值。 $pullAll - 删除多个指定值
> db.c5.find()
{ "_id" : ObjectId("51e2421ecf05e15d315aa746"), "arr" : [ , , , , , , , , , , ] }
> db.c5.update({}, {$pull:{arr:}});
> db.c5.find()
{ "_id" : ObjectId("51e2421ecf05e15d315aa746"), "arr" : [ , , , , , , , , ] }
$rename 更改属性名
> db.c5.update({}, {$rename:{'arr':'post'}}); //字符串所以,必须打上引号
> db.c5.find()
{ "_id" : ObjectId("51e2421ecf05e15d315aa746"), "post" : [ , , , , , ] }
$ 匹配前面 小json. 而并不是匹配整个json大数组
> db.c1.find()
{ "_id" : ObjectId("51e27de5cf05e15d315aa748"), "name" : "usr1", "arr" : [ { "title" : "linux" }, { "title" : "apache" }, { "content" : "i like it much" } ] }
> db.c1.update({'arr.title':'linux'}, {$set:{'arr.$.cnt':'hahaha'}});//这里arr.title,arr....必须添加上引号 否则报错
> db.c1.find()
{ "_id" : ObjectId("51e27de5cf05e15d315aa748"), "arr" : [ { "cnt" : "hahaha", "title" : "linux" }, { "title" : "apache" }, { "content" : "i like it much" } ], "name" : "usr1" }
//find 游标。 //findOne 完完全全赋值出去 搭配save属性区别
> db.c1.insert({name:'user11', age:});
> db.c1.find()
{ "_id" : ObjectId("51e280cfcf05e15d315aa749"), "name" : "user11", "age" : }
> var x = db.c1.findOne({name:'user11'});//不像find游标, 无法控制
> x
{
"_id" : ObjectId("51e280cfcf05e15d315aa749"),
"name" : "user11",
"age" :
}
> x.sex = 'man'
man
> x.phone = ''
> db.c1.save(x);
> db.c1.find()
{ "_id" : ObjectId("51e280cfcf05e15d315aa749"), "name" : "user11", "age" : , "sex" : "man", "phone" : "" }
mongo 语法 增删改查的更多相关文章
- 了解php数据库常用语法增删改查
数据库基本语法 MySQL增:insert into 表名 (字段1,...,字段n) values (值1,...,值n) MySQL删:delete from 表名 where 条件 MySQL改 ...
- MySQL基础语法------增删改查
1.增 1.1建立数据库 create database test2; 格式:create database <数据库名> 1.2建表 create table student( sno ...
- mongo基础---增删改查
正文 MongoDB 是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.MongoDB是一个介于关系型数据库和非关系数据库之间的产品,是非关系数据 ...
- mongo客户端mongo VUE增删改查
一.先创建一张mongo表,右击已创建的数据库test,点击addcollection.. 输入Collection Name,点击ok: 二.在创建的表中新增列与数据,右击表选择Insert doc ...
- sqlAlchemy语法增删改查
更多参见:https://www.cnblogs.com/tangpg/p/8528835.html?tdsourcetag=s_pcqq_aiomsg sqlalchemy-查询 User这个类创建 ...
- 2. MongoDB基本操作 —— 用Mongo.exe操作数据库增删改查
一.开篇 传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组成,MongoDB是由数据库(database).集合(collection).文档对象 ...
- MVC——数据库增删改查(Razor)——Html语法
一.显示界面 .Models(模板) private MyDBDataContext _context = new MyDBDataContext(); public List<Info> ...
- iOS使用sqlite3原生语法进行增删改查以及FMDB的使用
首先要导入libsqlite3.dylib并且加入头文件#import <sqlite3.h>,在进行增删改查之前还要先把数据库搞进去. 一种方法是从外面拷贝到程序里:http://www ...
- python全栈开发day62-两表操作增删改查,外键,if else模板语法
一.今日内容总结: day62 内容回顾: 1. django有关所有命令: pip install django==1.11.14 django-admin startproject 项目名称 cd ...
随机推荐
- ZOJ1586 QS Network 2017-04-13 11:46 39人阅读 评论(0) 收藏
QS Network Time Limit: 2 Seconds Memory Limit: 65536 KB Sunny Cup 2003 - Preliminary Round Apri ...
- WEBXONE IIS部署C/S程序
WEBXONE IIS部署C/S程序 在EXE的主窗体的ONCREATE()里添加如下代码,部署的时候记得带wxoBase.dll. uses wxoExec; procedure TFrmMain. ...
- SqlServer获取字符串中数字,中文及字符部分数据
--获取英文字符数据 Create function [dbo].[Fun_GetChar] ( ) ) ) AS BEGIN BEGIN ,'') --删掉一个非数字的字符,循环结束,剩余的为数字部 ...
- Mysql部署
1. 下载 Mysql 版本为: mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz (注意:下载二进制文件)  存放位置: /usr/local 2. 检查机器上 ...
- Metasploit渗透某高校域服务器
本文作者:i 春秋签约作家——shuteer 前期准备:1. 使用Veil生成免杀PAYLOAD: 2. 有一个外网IP的服务器,安装好metasploit,方便操作. 一.SHELL反弹meterp ...
- PHP之编写日志文件留后门(免杀)
(我知道你们都喜欢干货,所以也没亏待你们,请到文末吧,成果附件已上传~) 本文原创作者:Laimooc(原名xoanHn) 鄙人宗旨: 本人秉着爱学习爱恶搞爱研究爱进步并且遵纪守法的心态写下这篇文章, ...
- 替代iframe新逻辑
使用ajax请求.下面是代码逻辑 $.ajax({ url:url, type:'get', dataType: "text", success:function(msg){ $( ...
- Centos搭建Groovy开发环境
背景 临时接到需求,要帮兄弟团队跑一点线上的数据,据说很急.于是拿出了许久不用的Spring-Boot.可是,可是,死活启动有问题,心累了.其实一般写脚本就是在Boot用Groovy写好,然后放到线上 ...
- 我从Linux走来,选择了Windows
我从Linux走来,选择了Windows 几天前就想提笔写下这篇,理解很多人一定会对言论不苟同. 但是我相信您看完一个一年多的Linux用户写完的以后,一定也不会太反对 一.为什么我成为一名 Linu ...
- java后台简单从腾讯云下载文件通知前端以附件的形式保存
腾讯云对象存储和阿里云差不多 这是我的配置 /** * 腾讯云client * @return COSClient */ public static COSClient getCOSClient() ...