Mongodb基本操作

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介: Mongodb基本操作 连接数据库 创建数据库MongoDB 创建数据库的语法格式如下: use DATABASE_NAME 要插入数据之后show dbs 才会显示数据库,即插入 删除数据库MongoDB 删除数据库的语法格式如下: db.

Mongodb基本操作

  • 连接数据库


  • 创建数据库

MongoDB 创建数据库的语法格式如下:

use DATABASE_NAME

要插入数据之后show dbs 才会显示数据库,即插入


  • 删除数据库

MongoDB 删除数据库的语法格式如下:

db.dropDatabase()

为数据库创建一个用户

> use test

switched to db test

> db.createUser({user:"testuser",pwd:"testpass",roles:["readWrite"]})

Successfully added user: { "user" : "testuser", "roles" : [ "readWrite" ] }

> db.auth("testuser","testpass")

1

首先保证你已经以用户管理员的身份登录 admin 数据库。然后用 use 命令切换到目标数据库,同样用 db.createUser() 命令来创建用户,其中角色名为 “readWrite”。

普通的数据库用户角色有两种,read 和 readWrite。顾名思义,前者只能读取数据不能修改,后者可以读取和修改。


  • 创建集合

语法:db.createCollection(name, options)

在 MongoDB 中,你不需要创建集合。当你插入一些文档时,MongoDB 会自动创建集合。例如:db.test.insert({"test":"123"})


  • 删除集合

语法:db.collection.drop()


  • 插入文档

文档的数据结构和JSON基本一样。

所有存储在集合中的数据都是BSON格式。

BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。

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

db.COLLECTION_NAME.insert(document)

或者

将数据定义成一个变量


  • 更新文档

MongoDB 使用 update() 和 save() 方法来更新集合中的文档。

  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 :可选,抛出异常的级别。

2.save() 方法

语法:

db.collection.save( <document>, { writeConcern: <document> } )

参数说明:

  • document : 文档数据。
  • writeConcern :可选,抛出异常的级别。

通过ObjectId修改,如果save里面没有之前文档的节点,那么这些其他节点会消失。


  • 删除文档

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

MongoDB数据更新可以使用update()函数。在执行remove()函数前先执行find()命令来判断执行的条件是否正确,这是一个比较好的习惯。

remove()语法:

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

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

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

由此可见默认删除了两条数据,如果只想删除一条,即

db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)

如果你想删除所有数据

db.COLLECTION_NAME.remove({})


  • 查询文档

语法:db.COLLECTION_NAME.find(query, projection)

  • query :可选,使用查询操作符指定查询条件
  • projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

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

db.COLLECTION_NAME.find().pretty()

pretty() 方法以格式化的方式来显示所有文档。

显示指定列

db.collection.find(query, {name: 1, age: 1}) // inclusion模式 指定返回的键,不返回其他键

db.collection.find(query, {name: 0, age: 0}) // exclusion模式 指定不返回的键,返回其他键

将_id:0加入,即可隐藏_id


  • MongoDB 与 RDBMS Where 语句比较

等于

{<key>:<value>}

db.col.find({"by":"abc"}).pretty()

where by = 'abc'

小于

{<key>:{$lt:<value>}}

db.col.find({"likes":{$lt:50}}).pretty()

where likes < 50

小于或等于

{<key>:{$lte:<value>}}

db.col.find({"likes":{$lte:50}}).pretty()

where likes <= 50

大于

{<key>:{$gt:<value>}}

db.col.find({"likes":{$gt:50}}).pretty()

where likes > 50

大于或等于

{<key>:{$gte:<value>}}

db.col.find({"likes":{$gte:50}}).pretty()

where likes >= 50

不等于

{<key>:{$ne:<value>}}

db.col.find({"likes":{$ne:50}}).pretty()

where likes != 50


  • MongoDB AND 条件

MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。

语法格式如下:db.COLLECTION_NAME.find({key1:value1, key2:value2}).pretty()


  • MongoDB OR 条件

db.COLLECTION_NAME.find({$or: [  {key1: value1}, {key2:value2} ] } ).pretty()


  • AND 和 OR 联合使用


  • MongoDB $type 操作符

类型

数字

备注

Double

1

 

String

2

 

Object

3

 

Array

4

 

Binary data

5

 

Undefined

6

已废弃。

Object id

7

 

Boolean

8

 

Date

9

 

Null

10

 

Regular Expression

11

 

JavaScript

13

 

Symbol

14

 

JavaScript (with scope)

15

 

32-bit integer

16

 

Timestamp

17

 

64-bit integer

18

 

Min key

255

Query with -1.

Max key

127

 

查询'age'列中value类型为Double的数据

查询'age'列中value类型为String的数据


  • MongoDB Limit() 方法

如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。

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


  • MongoDB Skip() 方法

我们除了可以使用limit()方法来读取指定数量的数据外,还可以使用skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。

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

选择跳过第一条,得到第二条数据


  • MongoDB 排序sort()方法

在MongoDB中使用使用sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列。

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

注:skip(), limilt(), sort()三个放在一起执行的时候,执行的顺序是先 sort(), 然后是 skip(),最后是显示的 limit()。


  • MongoDB 索引

ensureIndex() 方法

MongoDB使用 ensureIndex() 方法来创建索引。

语法:db.COLLECTION_NAME.ensureIndex({KEY:1})

语法中 Key 值为你要创建的索引字段,1为指定按升序创建索引,如果你想按降序来创建索引指定为-1即可。


  • MongoDB 聚合

MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似sql语句中的 count(*)。

语法:db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

统计age相同的数据的求和

聚合函数:

$sum

计算总和。

db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])

$avg

计算平均值

db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])

$min

获取集合中所有文档对应值得最小值。

db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])

$max

获取集合中所有文档对应值得最大值。

db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])

$push

在结果文档中插入值到一个数组中。

db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])

$addToSet

在结果文档中插入值到一个数组中,但不创建副本。

db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])

$first

根据资源文档的排序获取第一个文档数据。

db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])

$last

根据资源文档的排序获取最后一个文档数据

db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])


  • 建立唯一索引

语法:db.COLLECTION_NAME.ensureIndex({"xxx":1},{"unique":true})

原文地址 https://blog.csdn.net/qq_37421862/article/details/81286063

相关实践学习
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
相关文章
|
8月前
|
JSON NoSQL MongoDB
mongodb基本操作,增删改查,查询,索引,权限机制
mongodb基本操作,增删改查,查询,索引,权限机制
|
5月前
|
JSON NoSQL MongoDB
MongoDB【CRUD基本操作】
MongoDB【CRUD基本操作】
|
6月前
|
存储 JSON NoSQL
02 MongoDB - 基本操作
02 MongoDB - 基本操作
14 0
|
11月前
|
NoSQL 关系型数据库 MySQL
MongoDB 基本操作 增删改查
MongoDB 基本操作 增删改查
190 0
|
存储 NoSQL 安全
MongoDB基本操作(五)——分片集群与安全认证
MongoDB基本操作(五)——分片集群与安全认证
390 0
MongoDB基本操作(五)——分片集群与安全认证
|
NoSQL 安全 MongoDB
MongoDB基本操作(四)——集群与安全
MongoDB基本操作(四)——集群与安全
118 0
|
NoSQL Java MongoDB
MongoDB基本操作(三)——使用Java操作MongoDB
MongoDB基本操作(三)——使用Java操作MongoDB
134 0
|
存储 JSON NoSQL
MongoDB基本操作(二)——排序、分页、聚合查询、优化索引等
MongoDB基本操作(二)——排序、分页、聚合查询、优化索引等
1263 0
|
JSON NoSQL MongoDB
MongoDB基本操作(一)——简介、基本操作、增删改查
MongoDB基本操作(一)——简介、基本操作、增删改查
261 0
|
JSON NoSQL 数据处理
MongoDB 的基本操作|学习笔记
快速学习 MongoDB 的基本操作
144 0