mongodb的学习笔记一(集合和文档的增删改查)
1数据库的增删改查
一、增加一个数据库:
use blog-----切换到指定的数据库,如果数据库不存在,则自动创建该数据库(新建的数据库,如果没有存储对应的集合,是不会显示出来的)
二、删除一个数据库
1首先用use 切换到你需要删除的数据库
use test
2然后执行db.dropDatabase()命令
db.dropDatabase()
三、修改一个数据库的名字
db.copyDatabase(fromdb, todb, fromhost)
fromdb:源数据库,
todb:目标数据库
fromhost:原地址 实例:修改blog的数据库名为blog123
use blog
db.copyDatabase("blog","blog3");
db.dropDatabase()
四、查询所有数据库
show dbs
2文档的增删改查(集合---表,文档--行,字段--列)
一、增加文档
db.table_name.insert(document):插入文档
db.table_name.save(document):插入文档,如果带有id,则更新
注意,document都是json格式
实例:插入一个user实例
db.user.insert({"name":"zhangsan","password":"123456"})
或
db.user.save({"name":"zhangsan","password":"123456"})
二、删除文档
db.table_name.remove(query,juseone)
注意:query与justone都是JSON格式
query:删除的查询条件
justone:是否只删除一条文档
示例:只删除一个name等于test的文档
db.user.remove({"name":"test"},{justone:1})
三、更新文档
update语句:
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
) 参数说明: query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。 示例:更新name为zhangsan的密码为111111,如果不存在就插入,如果存在多条,则只更新一条
use blog
db.user.update({"name":"zhangsan"},{$set:{"password":"111111"},true,false})
update语句的更新操作符说明:
1$set:相当于等号“=”,也可以为文档新增加一个字段,例如name不存在,则添加一个name字段
例如:{$set:{“name“:“"123"}} 2$inc:相当于“加等”“+=”,字段必须存在,
例如:{$inc:{"ago":1}} 3$unset:去除文档的某个字段
例如:{$unset:{"ago":0}}
4$push:为文档的某个字段添加一个数组值,如果字段不存在,则创建字段
原记录:
{ "_id" : ObjectId("5003be465af21ff428dafbe7"), "name" : "zhangsan", "password":"123456","group" : [ "manager" ]}
执行命令
db.user.update({"name" : "zhangsan"},{$push:{"group":"sale"}})
执行后
{ "_id" : ObjectId("5003be465af21ff428dafbe7"), "name" : "zhangsan", "password":"123456","group" : [ "manager" ,"sale"]}
5$ne
主要给数组类型键值添加一个元素时,避免在数组中产生重复数据,$ne在有些情况是不通行的。
db.user.update({"group" : {$ne:"sale"}},{$push:{"group":"sale"}})
6.数组修改器--$pop、$pull
$pop从数组的头或者尾删除数组中的元素
--从数组的尾部删除 1
> db.c.update({"name" : "zhangsan"},{$pop:{"group":1}})
$pull从数组中删除满足条件的元素,示例如下:
> db.user.update({"name" : "zhangsan"},{$pull:{"group":"sale"}}) 7.数组的定位修改器
-------------------------------------------------------------------
在需要对数组中的值进行操作的时候,可通过位置或者定位操作符("$").数组是0开始的,可以直接将下标作为键来选择元素。
示例如下:
{"uid":"001",comments:[{"name":"t1","size":10},{"name":"t2","size":12}]} > db.c.find({"uid":"001"})
{ "_id" : ObjectId("5003da405af21ff428dafbe8"), "uid" : "001", "comments" : [ {
"name" : "t1", "size" : 10 }, { "name" : "t2", "size" : 12 } ] }
> db.c.update({"uid":"001"},{$inc:{"comments.0.size":1}})
> db.c.find({"uid":"001"})
{ "_id" : ObjectId("5003da405af21ff428dafbe8"), "uid" : "001", "comments" : [ {
"name" : "t1", "size" : 11 }, { "name" : "t2", "size" : 12 } ] }
save()语句:
save() 方法通过传入的文档来替换已有文档。语法格式如下: db.collection.save(
<document>,
{
writeConcern: <document>
}
)
document:JSON格式 示例:更新name为zhangsan的密码为123456
use blog
db.user.save({ "_id" : ObjectId("574d9667ec9f7148b53f27d9"), "name":"zhangsan","password" : "123456" })
四、查询文档
db.table_name.find(query)
query:json格式,可以使用操作符
示例:查询ago大于20并且(name等于张三或password等于123456)的记录
db.col.find({"ago": {$gt:20}, $or: [{"name": "zhangsan"},{"password": "123456"}]}).pretty()
db.col.find().pretty():以合理的格式显示查询的内容
mongodb的学习笔记一(集合和文档的增删改查)的更多相关文章
- mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)
最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...
- 【转】mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)
mongoDB 学习笔记纯干货(mongoose.增删改查.聚合.索引.连接.备份与恢复.监控等等) http://www.cnblogs.com/bxm0927/p/7159556.html
- Mongodb的基本操作-数据库 集合 文档的增删改查
数据库操作: //查看有哪些数据库 > show dbs local 0.078GB mydb 0.078GB //use操作将切换到一个数据库 如果数据库存在将直接切换 如果不存在 那么 ...
- Java学习笔记34(sql基础 :增删改查1)
create database qy97;/*创建数据库*/ use qy97; /*使用数据库 use 数据库名*/ show tables; /*查看所有的表*/ select database( ...
- C#学习笔记(6)——大项目增删改查
说明(2017-5-28 11:35:39): 1. 需要注意的地方很多 2. 首先是连接字符串str要直接写在类里面,不然每个按钮里面都要写一遍. 3. 查询用到sqlDataReader等三个方法 ...
- Spring学习笔记:声明式事务管理增删改查业务
一.关于是事务 以方法为单位,进行事务控制:抛出异常,事务回滚. 最小的执行单位为方法.决定执行成败是通过是否抛出异常来判断的,抛出异常即执行失败 二.声明式事务: 声明式事务(declarative ...
- 【转载】salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建
salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建 VisualForce封装了很多的标签用来进行页面设计,本篇主要讲述简单的页面增删改查.使用的内容和设计到前台页面使用的 ...
- golang学习之beego框架配合easyui实现增删改查及图片上传
golang学习之beego框架配合easyui实现增删改查及图片上传 demo目录: upload文件夹主要放置上传的头像文件,main是主文件,所有效果如下: 主页面: 具体代码: <!DO ...
- Elasticsearch之文档的增删改查以及ik分词器
文档的增删改查 增加文档 使用elasticsearch-head查看 修改文档 使用elasticsearch-head查看 删除文档 使用elasticsearch-head查看 查看文档的三种方 ...
随机推荐
- mysql中显示当前数据库下的所有表,包括视图。
环境说明: mysql版本:5.5.57-log 操作系统:Red Hat Enterprise Linux Server release 6.6 (Santiago) 需求:查看当前数据库下所有的表 ...
- 【11-13】A股主要指数的市盈率(PE)估值高度
全指材料(SH000987) - 2018-11-13日,当前值:12.4646,平均值:30.54,中位数:26.09865,当前 接近历史新低.全指材料(SH000987)的历史市盈率PE详情 内 ...
- oracle 按照时间间隔进行分组
select sum(SHOW_NUMBER) as SHOW_NUMBER ,d.dt from T_RECOMMEND_ANALYSIS t,( ) dt ) d group by d.dt 按照 ...
- MTK 预置apk
一.如何将带源码的APK预置进系统? 1) 在 packages/apps 下面以需要预置的 APK的 名字创建一个新文件夹,以预置一个名为Test的APK 为例 2) 将 Test ...
- Dubbo -- 系统学习 笔记 -- 示例 -- 服务分组
Dubbo -- 系统学习 笔记 -- 目录 示例 想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式 服务分组 当一个接口有多种实现时,可以用group区分. <dubbo:se ...
- Lab6: Paxos
Introduction In labs 6 and 7, you will replicate the lock service using the replicated state machine ...
- python与VScode
用VScode写python是非常方便的.vscode是一个功能非常强大的编辑器,下面介绍大致的使用方法: 下载安装python,配置环境变量. 下载安装VScode(vscode会自动连接pytho ...
- Django 添加应用
一个项目可以添加多个应用,可以使用以下两种方法来添加应用: [root@localhost web]$ python manage.py startapp blog [root@localhost w ...
- MQTT_DEMO
1 /* 2 Copyright (c) 2009-2012 Roger Light <roger@atchoo.org> 3 All rights reserved. 4 5 Redis ...
- WebForm的初步认识
嘿嘿,这里就简单的总结一下初步学习webform以及对他的认识,其实大家都认为webform很讨厌,因为好多都是给我们封装好的,而且现在好多的公司已经慢慢的从中逃离出来选择使用mvc架构,甚至好多的项 ...