详细介绍MongoDB常用操作,助你更灵活的使用它

目录

前言

基本概念

数据库

查看所有的数据库

连接到一个指定的数据库

删除数据库(慎用!!!)

集合

创建集合

查看集合

删除集合

文档

插入文档

更新文档

删除文档

查询文档

limit与skip方法

文档排序

 总结


前言

Mongodb是非常好用的NoSQL数据库,前篇详细介绍MongoDB的安装步骤,本篇通过思维导图的方式详细介绍MongoDB常用操作,助你更灵活的使用它。

 

基本概念

在mongodb中基本的概念是文档、集合、数据库,下表帮助你更加容易理解Mongo中的一些概念:

SQL术语/概念

MongoDB术语/概念

解释/说明

database

database

数据库

table

collection

数据库表/集合

row

document

数据记录行/文档

column

field

数据字段/域

index

index

索引

table joins

表连接,MongoDB不支持

primary key

primary key

主键,MongoDB自动将_id字段设置为主键

小贴士:一个mongodb实例可以创建多个数据库、一个数据库可以创建多个集合、一个集合可以包括多个文档。

数据库

一个mongodb中可以建立多个数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。

找到mongodb bin目录,执行./mongo 进入

查看所有的数据库

show dbs

连接到一个指定的数据库

use local

 小贴士:有test数据库则切换到此数据库,没有则创建。

删除数据库(慎用!!!)

db.dropDatabase()

小贴士:删除时,先要切换到对应的数据库,在执行删除。

数据库也通过名字来标识。在用UTF-8字符串命名时,要注意以下几点: 

(1)不能是空字符串("")。

(2)不得含有' '(空格)、.、$、/、\和\0 (空字符)。

(3)应全部小写。

(4)最多64字节。

集合

集合相当于关系数据库中的表,一个数据库可以创建多个集合,一个集合是将相同类型的文档管理起来。

创建集合

db.createCollection(name, options)

 以下实例创建collection1集合

> use test 
switched to db test
> db.createCollection("collection1")
{ "ok" : 1 }

参数说明:

name: 要创建的集合名称

options: 可选参数, 指定有关内存大小及索引的选项,参数如下: 

字段
描述
capped
布尔
(可选)如果为 true ,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。当该值为 true 时,必 须指定 size 参数。
autoIndexId
布尔
(可选)如为 true ,自动在 _id 字段创建索引。默认为 false
size
数值
(可选)为固定集合指定一个最大值(以字节计)。 如果 capped true ,也需要指定该字段。
max
数值
(可选)指定固定集合中包含文档的最大数量。
小提示:在插入文档时, MongoDB 首先检查固定集合的 size 字段,然后检查 max 字段。  

查看集合

show collections 

删除集合

db.collection_name.drop()

以下实例删除了  test 数据库中的集合  collection1

> use test
switched to db test
> show tables
collection1
> db.collection1.drop()
true 

文档

档是一组键值对(key-value)(即 BSON)。MongoDB文档不需要设置相同的字段,并且字段相同不需要相同的数据类型,这与关系型数据库有很大的不同,也是MongoDB的一个非常突出的特点。

插入文档

MongoDB 使用 insert() save() 方法向集合中插入文档,语法如下:

db.COLLECTION_NAME.insert(document)

在 collection 集合中插入以下文档:

db.collection1.insert({"name":"大雄","age":20})

更新文档

方式一:

db.collection.update(<query>,<update>,<options>)

参数说明:

query:查询条件,相当于sql语句的where

update:更新文档内容

options:选项

将符合条件 "name":"大雄"的第一个文档替换为{"name":"大雄1","age":25}

db.collection1.update({"name":"大雄"},{"name":"大雄1","age":25})

 方式二:

$set修改器(使用$set修改器指定要更新的key,key不存在则创建,存在则更新。)

将符合条件 "name":"大雄"的所有文档更新name和age的值。

db.collection1.update({"name":"大雄1"},{$set:{"name":"大雄smile","age":26},{multi:true})

小提示:multi为false时表示更新第一个匹配的文档,true表示更新所有匹配的文档。

删除文档

MongoDB remove()函数是用来移除集合中的数据。

db.collection.remove( <query>, <justOne> )

 如果你的 MongoDB 2.6 版本以后的,语法格式如下:

db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)

参数说明:

query :(可选)删除的文档的条件。

justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。

writeConcern :(可选)抛出异常的级别。

(1)删除所有文档

db.collection1.remove({}) 

(2)删除符合条件的文档

db.collection1.remove({"name":"大雄1"})

 (3)如果你只想删除第一条找到的记录可以设置 justOne 1

db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)

查询文档

MongoDB 查询数据的语法如下:

 db.collection.find(query, projection)

参数说明:

query :可选,使用查询操作符指定查询条件

projection :可选,投影查询key,查询时返回文档中所有键值,可不填

(1)查询全部

 db.collection1.find()

 (2)查询符合条件的记录

db.collection1.find({"name":"大雄1"})

(3)投影查询,只显示name和age两个key,_id主键不显示。

db.collection1.find({"name":"大雄smile"},{name:1,age:1,_id:0})

 

如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:

db.collection1.find().pretty()

 小贴士:pretty() 方法以格式化的方式来显示所有文档

limitskip方法

limit()方法基本语法:

db.COLLECTION_NAME.find().limit(NUMBER)

读取指定数量为两条记录

db.collection1.find({},{"name":1,_id:0}).limit(2)

 小提示:如果你们没有指定limit()方法中的参数则显示集合中的所有数据。

skip() 方法 基本语法:

db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

 使用skip()方法来跳过指定数量的数据,显示第二条文档数据命令如下:

db.collection1.find({},{"name":1,_id:0}).limit(1).skip(1)

文档排序

db.COLLECTION_NAME.find().sort({KEY:1})

小贴士:sort() 方法可以通过参数指定排序的字段, 其中 1 为升序排列,而 -1 是用于降序排列。

db.collection1.find({}).limit(2).sort({"age":1})

 总结

以上详细介绍MongoDB对数据库、集合、文档的常用操作,希望对你操作MongoDB有一定的帮助。如果你不清楚的问题,欢迎下方留言。

如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦。欢迎关注,一起MongoDB学习之旅!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值