MongoDB基本操作(一)——简介、基本操作、增删改查

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介: MongoDB基本操作(一)——简介、基本操作、增删改查

MongoDB目录

文档

简介

基本操作

启动服务

查看服务信息

选择数据库

删除数据库

查看集合

创建集合

删除集合

ID的组成:

增删改查

C增

R查

升级语法:

运算符表:

U改

基础语法:

升级语法:

D删

try catch


文档


中文社区:https://mongoing.com

官方中文文档:https://docs.mongoing.com

官方文档:https://docs.mongodb.com/manual/mongo/

中文文档:https://www.runoob.com/mongodb/mongodb-databases-documents-collections.html


简介


Mongo是一个基于分布式文件存储的Nosql数据库。

支持的数据结构非常松散,可以通过json格式来修改插入数据


基本操作


启动服务


#fork 后台运行  若要使用账号密码服务 需要在启动时加 --auth
mongod --dbpath /usr/local/var/mongodb --logpath /usr/local/var/log/mongodb/mongo.log --fork
#不在后端运行,可以在控制台上查看运行过程,使用配置文件启动
mongod --config /usr/local/etc/mongod.conf
//关闭方法db.shutdownServer()  之后exit
需要账号密码的登陆方式:
方法一:
mongo 服务器IP地址:mongo 127.0.0.1/admin -u admin -p 123456
方法二:
mongo进入shell
use admin
db.auth('admin','123456') 返回1则验证成功

查看服务信息


ps aux | grep -v grep | grep mongod
## 查看数据库
show databses

选择数据库


use database[数据库名称] 选择不存在的数据库会隐式创建该数据库

删除数据库


先选择到要删除的数据库 db.dropDatabase

查看集合


show collections

创建集合


db.createCollection('c1')

删除集合


db.集合名.drop()

ID的组成:


0 1 2 3 4 5 6 7 8 9 10 11

0-3:时间戳 4-6:机器mac码 7-8:PID 9-11:计数器

也可以自定义ID,只需要给插入的JSON数据增加_id键即可覆盖(强烈不推荐)


增删改查


C增


db.集合名.insert(JSON数据)
集合存在,则直接插入数据,集合不存在,隐式创建并插入
use test2
db.c1.insert({username:"xzy",age:18})
db.c1.insertMany({})
留心一:数据库和集合不存在时,都隐式创建
留心二:对象的键同意不加引号方便看,但是查看集合数据时系统会自动加上
留心三:mongodn会给每条数据添加一个全球唯一的ID
插入多条数据:
传递数组,数组中每个元素都是一个JSON类型
db.c1.insert([
  {username:"z3",age:3},
  {username:"z4",age:4},
  {username:"z5",age:5}
])
插入N条数据:
mongodb底层使用JS引擎实现的,所以支持部分js语法,可以使用for循环
for(var i=1;i<=10;i++){
  print(i)
}
插入十条数据:
for(var i=1;i<=10;i++){
  db.c1.insert({username:"a"+i,age:i})
}

R查


语法: db.集合名.find(条件,[查询的列])

格式化:db.集合名.find().pretty()

条件:
  查询所有数据          {}或者不写
  查询age=6的数据       {age:6}
  查询age=6且性别为男   {age:6,sex:'男'}
查询的列
  不写 - 查询全部的列
  {age:1} 只显示age列,可以显示多个想要的列{user:1,age:1.......} 
  {age:0} 除了age列外都显示 可以不显示多个想要的列{user:0,age:0}
  无论怎么写系统自定义_id都会在

升级语法:


db.集合名.find(键:值)  注:值不直接写
              {运算符:值}
db.集合名.find({
  键:{运算符:值}
})
例如:
年龄小于5的
db.c1.find({age:{$lt:5}})
年龄等于3、4、5的
db.c1.find({age:{$in:[3,4,5]}})

运算符表:


运算符 作用
$gt 大于
$gte 大于等于
$lt 小于
$lte 小于等于
$ne 不等于
$in in
$nin Not in

U改


基础语法:


db.集合名.update(条件,新数据[,是否新增,是否修改多条])

是否新增:指条件匹配不到数据则插入,true是插入,false否不插入默认
是否修改多条:指将匹配成功的数据都修改(true是,false否默认)
for(var i=1;i<=10;i++){
  db.c3.insert({username:"zs"+i,age:i});
}
db.c3.update({username:"zs1"},{username:"zs2"})#这样是替换,将符合条件的行直接换成这个

升级语法:


db.c3.update({username:"zs2"},{$set:{username:"zs222"}})  
给zs10 增加2岁
db.c3.update({username:"zs10"},{$inc:{age:2}})
给zs10 减少2岁
db.c3.update({username:"zs10"},{$inc:{age:-2}})
准备:插入一个数据: db.c4.insert({username:"熊子阳",age:18,who:"男",other:"没钱"})
修改数据,将 熊子阳 改为 Aoi  ,age 改为999 ,who 改为 sex ,other 删除
db.c4.update({username:"熊子阳"},
{$set:{username:"Aoi"}},
{$inc:{age:971}},
{$rename:{who:sex}},
{$unset:{other:true}})
正确写法:
db.c4.update({username:"熊子阳"},{
  $set:{username:"Aoi"},
  $inc:{age:971},
  $rename:{who:"sex"},
  $unset:{other:true}
})
#更新不存在的值,若不存在则不会有操作
> db.c3.update({username:"zs30"},{$set:{age:30}})
#在最后加一个true参数,作用是,如果不存在,则插入该条数据,默认为false则不管
> db.c3.update({username:"zs30"},{$set:{age:30}},true)
#第四个参数如果为true,当匹配到多条条件符合的元素时,都更改,默认为false,只改一条
> db.c3.update({},{$set:{age:20}},false,true)
运算符 作用
$inc 递增
$rename 重命名列
$set 修改列值
$unset 删除列

D删


语法:db.集合名.remove(条件[,是否删除一条])
是否删除一条 true是,false否 默认
当存在多条符合条件的行时,只删除一条
db.c3.remove({username:"zs30"},true)
存在多条时,全部删除
db.c3.remove({username:"zs30"},true)

try catch


当一次性插入或者更新n条数据时,mongodb不会因为一条数据的错误而使得整个操作终止并回滚,只会终止接下来的操作,所以可以使用trycatch来进行异常的捕捉处理。测试的时候可以不处理。

例如:
try{
  db.c1.insertMany([
  {"_id":1,name:"xzy"},
  {"_id":2,name:"lhl"},
  {"_id":3,name:"yzh"},
  {"_id":4,name:"lwy"}...
}
  ])
}catch(e){
  print
}


相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
5月前
|
NoSQL 数据可视化 关系型数据库
mongoDB入门教程三:数据库的创建和删除(增删改查)基本命令
mongoDB入门教程三:数据库的创建和删除(增删改查)基本命令
139 0
|
7月前
|
JSON NoSQL MongoDB
mongodb基本操作,增删改查,查询,索引,权限机制
mongodb基本操作,增删改查,查询,索引,权限机制
|
8月前
|
存储 NoSQL Java
SpringBoot 中使用 MongoDB 基于 MongoRepository增删改查(基础篇)
SpringBoot 中使用 MongoDB 基于 MongoRepository增删改查(基础篇)
380 0
|
4天前
|
存储 分布式计算 NoSQL
MongoDB的简介和安装(在服务器上)
MongoDB的简介和安装(在服务器上)
19 0
|
4月前
|
JSON NoSQL MongoDB
MongoDB【CRUD基本操作】
MongoDB【CRUD基本操作】
|
5月前
|
存储 JSON NoSQL
02 MongoDB - 基本操作
02 MongoDB - 基本操作
13 0
|
5月前
|
存储 JSON NoSQL
01 MongoDB - 简介
01 MongoDB - 简介
25 0
|
6月前
|
存储 JSON NoSQL
95分布式电商项目 - MongoDB 简介
95分布式电商项目 - MongoDB 简介
37 0
|
8月前
|
SQL NoSQL API
五分钟叫你学会操作MongoDB增删改查
五分钟叫你学会操作MongoDB增删改查
127 0
|
9月前
|
JSON NoSQL 数据库连接
[虚幻引擎 MongoDB Client 插件说明] DTMongoDB MongoDB数据库连接插件,UE蓝图可以操作MongoDB数据库增删改查。
本插件可以在UE里面使用蓝图操作MongoDB数据库, 对数据库进行查询,删除,插入,替换,更新操作。
126 0