MongoDB 创建数据库教程

Posted 榴莲酱csdn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB 创建数据库教程相关的知识,希望对你有一定的参考价值。

MongoDB 创建database

语法

MongoDB 创建database的语法格式如下:


    use DATABASE_NAME

如果database不存在,则创建database,否则切换到指定database。

实例

以下实例咱们创建了database liulianjiangcsdn:


    > use liulianjiangcsdn
    switched to db liulianjiangcsdn
    > db
    liulianjiangcsdn
    >

如果仁兄您想查看所有database,可以使用 show dbs 命令:


    > show dbs
    admin   0.000GB
    config  0.000GB
    local   0.000GB
    >

可以看到,咱们刚创建的database liulianjiangcsdn 并不在database的列表中, 要显示它,咱们需要向 liulianjiangcsdn database插入一些数据。


    > db.liulianjiangcsdn.insert("name":"liulianjiangcsdn教程")
    WriteResult( "nInserted" : 1 )
    > show dbs
    admin   0.000GB
    config  0.000GB
    local   0.000GB
    liulianjiangcsdn  0.000GB

MongoDB 中默认的database为 test,如果仁兄您没有创建新的database,集合将存放在 test database中。

注意: 在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。

本专栏所有文章

第1章 MongoDB 教程第2章 NoSQL 简介教程
第3章 MongoDB 简介教程第4章 Windows MongoDB教程
第5章 Linux MongoDB教程第6章 OSX MongoDB教程
第7章 MongoDB 概念解析教程第8章 MongoDB 连接教程
第9章 第9章 MongoDB 创建数据库教程教程第10章 MongoDB 删除数据库教程
第11章 MongoDB 创建集合教程第12章 MongoDB 删除集合教程
第13章 MongoDB 插入文档教程第14章 MongoDB 更新文档教程
第15章 MongoDB 删除文档教程第16章 MongoDB 查询文档教程
第17章 MongoDB 条件操作符教程第18章 MongoDB $type 操作符教程
第19章 MongoDB Limit与Skip方法教程第20章 MongoDB 排序教程
第21章 MongoDB 索引教程第22章 MongoDB 聚合教程
第23章 MongoDB 复制(副本集)教程第24章 MongoDB 分片教程
第25章 MongoDB 备份与恢复教程第26章 MongoDB 监控教程
第27章 MongoDB Java教程第28章 MongoDB php 扩展教程
第29章 MongoDB PHP教程第30章 MongoDB PHP7教程
第31章 Node.js MongoDB教程第32章 MongoDB 关系教程
第33章 MongoDB 数据库引用教程第34章 MongoDB 覆盖索引查询教程
第35章 MongoDB 查询分析教程第36章 MongoDB 原子操作教程
第37章 MongoDB 高级索引教程第38章 MongoDB 索引限制教程
第39章 MongoDB ObjectId教程第40章 MongoDB Map Reduce教程
第41章 MongoDB 全文检索教程第42章 MongoDB 正则表达式教程
第43章 MongoDB 管理工具教程第44章 MongoDB GridFS教程
第45章 MongoDB 固定集合教程第46章 MongoDB 自动增长教程

寄语

本文有榴莲酱CSDN原创,欢迎点赞、转载,博客地址:https://blog.csdn.net/qq441540598

  • 穷是一种心态,你若一辈子坚持自己是穷人,拥有大量金钱也救不你。
  • 好花盛开,就该尽先摘,慎莫待美景难再,否则一瞬间,它就要凋零萎谢,落在尘埃。
  • 常常看别人缺点的人,自己本身好不到哪里去,因为他没时间检讨自己。
  • 学会感恩,就缔造了一个美好的心灵;一个美好的心灵就塑造了一个美丽的人生。
  • 从挫折中获得智慧、变得坚强,意味着你比以往任何时候都更有能力生存。

最全 MongoDB 基础教程


MongoDB

创建数据库

- 格式:use DATABASE_NAME
- use ruochen
- db

创建数据库需要插入一条数据才会在列表中显示
- db.ruochen.insert(‘name’: ‘若尘’)
- show dbs

删除数据库

  • 格式:db.dropDatabase()
  • use ruochen
  • db.dropDatabase()
  • show dbs

创建集合

- 格式:db.createCollection(name, options)
- name: 要创建的集合名称
- options: 可选参数,指定有关内存大小及索引的选项

字段

类型

描述

capped

布尔

(可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。当该值为 true 时,必须指定 size 参数。

autoIndexId

布尔

(可选)如为 true,自动在 _id 字段创建索引。默认为 false。

size

数值

(可选)为固定集合指定一个最大值,以千字节计(KB)。如果 capped 为 true,也需要指定该字段。

max

数值

(可选)指定固定集合中包含文档的最大数量。

在插入文档时,MongoDB 首先检查固定集合的 size 字段,然后检查 max 字段

实例
# 在test数据库中创建ruochen 集合
use test
db.createCollection(ruochen)
# 查看已有集合
show collections

db.createCollection(test, capped: true, autoIndexId: true, size: 1024000, max: 10000) # autoIndexId 已弃用,默认_id添加索引

# 插入文档时,MongoDB会自动创建集合
db.ruochen.insert(name: ruochen)

删除集合

  • 格式:db.collection.drop()
  • use ruochen
  • db.createCollection(‘ruochen’) # 创建集合
  • show tables
  • db.ruochen.drop()
  • show tables

插入文档

  • 格式:db.COLLECTION_NAME.insert(document)
  • 方法1
  • db.ruochen.insert(title: ‘MongoDB 教程’,
    description: ‘shu ju ku’,
    by: ‘ruochen’,
    tags: [‘mongodb’, ‘database’, ‘NoSQL’]
    )
  • db.ruochen.find()
  • 方法2
  • document=(title: ‘mongodb’,
    description: ‘shu ju ku’,
    by: ‘ruochen’,
    tags: [‘mongodb’, ‘database’, ‘NoSQL’]
    )
  • db.ruochen.insert(document)
  • db.ruochen.find()
  • db.collection.insertOne() # 向指定集合中插入一条文档数据
  • db.collection.insertMany() # 向指定集合中插入多条文档数据
  • var document = db.ruochen.insertOne(“e”: 3)
  • document
  • var res = db.ruochen.insertMany([‘a’: 1, ‘b’: 2])
  • res
  • 一次插入多条数据
  • 先创建数组
  • 将数据放在数据中
  • 一次insert到集合中
  • 案例
  • var arr = [];
  • for(var i = 1; i < 5; i++)
    arr.push(num:i);
  • db.num.insert(arr);

更新文档

格式
db.collection.update(
<query>,
<update>,

upsert: <boolean>,
multi: <boolean>,
writeConcern: <ducument>

)

query: update的查询条件,类似sql update查询内where后面的
update: update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
upsert: 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入
multi: 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新
writeConcern: 可选,抛出异常的级别

案例
db.ruochen.insert(
title: mongodb,
description: Nosql 数据库,
by: ruochen,
tags: [mongodb, databases, NoSQL]
)

db.ruochen.update(title: mongodb, $set:title: MongoDB) # 只会修改第一条发现的文档
db.ruochen.find().pretty()

db.ruochen.update(title: mongodb, $set:title: MongoDB, multi:true) # 修改多条相同的文档


save() 方法: 通过传入的文档来替换已有文档
格式
db.collection.save(
<document>,

writeConcern: <document>

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

案例
db.ruochen.save(
"_id" : ObjectId("5e631a14c17b253e9cef40cc"),
"title" : "MongoDB",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "Runoob",
"url" : "http://www.runoob.com",
"tags" : [
"mongodb",
]
)
db.ruochen.find().pretty()

删除文档

语法:
db.collection.remove(
<query>,
<justOne>
)

2.6版本以后语法格式
db.collection.remove(
<query>

justOne: <boolean>,
writeConcern: <document>

)

参数说明
query: (可选) 删除的文档的条件
justOne: (可选) 如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档
writeConcern: (可选) 抛出异常的级别

db.ruochen.remove(title: mongodb)

# 只删除第一条找到的记录
db.COLLECTION_NAME.remove(DELETION_CRITHRIA, 1)

# 删除所有数据
db.ruochen.remove()
db.ruochen.find()

# remove() 方法 并不会真正释放空间
# 需要执行db.repairDatabase() 来回收磁盘空间
db.repairDatabase()
db.runCommand(repairDatabase: 1)

remove方法已经过时
# 删除集合下所有文档
db.ruochen.deleteMany()
# 删除 num 等于1 的全部文档
db.ruochen.deleteMany(num: 1)
# 删除 num 等于1 的一个文档
db.ruochen.deleteOne(num: 1)

查询文档

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

# 以易读的方式读取数据
db.ruochen.find().pretty()

操作

格式

范例

RDBMS中的类似语句

等于

key:value

db.ruochen.find(‘by’:‘ruochen’).pretty()

where by = ‘ruochen’

小于

key:$lt: value

db.ruochen.find(‘likes’: $lt:3).pretty()

where likes < 3

小于或等于

key:$lte: value

db.ruochen.find(‘likes’: $lte:2).pretty()

where likes <= 2

大于

key:$gt: value

db.ruochen.find(‘likes’: $gt:100).pretty()

where likes > 100

大于等于

key:$gte: value

db.ruochen.find(‘likes’: $gte:200).pretty()

where likes >= 200

不等于

key:$ne: value

db.ruochen.find(‘likes’: $ne:200).pretty()

where likes != 200

AND条件

  • find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件
  • 格式:
  • db.ruochen.find(key1: value1, key2: value2).pretty()
  • 案例
  • db.ruochen.find(‘by’: ‘ruochen’, ‘likes’: 200).pretty()

类似于 where by=‘ruochen’ and likes=200

or条件

  • 格式
  db.ruochen.find(

$or:[
key1: value1, key2: value2
]

).pretty()
  • 案例
  • db.ruochen.find($or:[‘likes’: 2, ‘likes’:200]).pretty()

AND和OR联合

  • db.ruochen.find(‘likes’: $gt:100, $or: [‘likes’: 2, ‘likes’: 200]).pretty()

条件操作符

db.ruochen.insert(
title: python,
description: i love python,
by: ruochen,
url: xxx,
tags: [python],
likes: 200
)

db.ruochen.insert(
title: php,
description: php是世界上最好的语言,
by: ruochen,
url: xxx,
tags: [php],
likes: 150
)

db.ruochen.insert(
title: MondoDB,
description: NoSQL数据库,
by: ruochen,
url: xxx,
tags: [mongodb],
likes: 100
)

# 获取 ruochen 集合中 likes 大于100的数据
db.ruochen.find(likes: $gt: 100).pretty()
# 类似于SQL语句
Select * from ruochen where likes > 100;


获取 ruochen 集合中 likes 大于等于100的数据
db.ruochen.find(likes: $gte: 100).pretty()
# 类似于SQL语句
Select * from ruochen where likes >= 100;


# 获取 ruochen 集合中 likes 小于150的数据
db.ruochen.find(likes: $lt: 150).pretty()
# 类似于SQL语句
Select * from ruochen where likes < 150;


# 获取 ruochen 集合中 likes 小于等于150的数据
db.ruochen.find(likes: $lte: 150).pretty()
# 类似于SQL语句
Select * from ruochen where likes <= 150;

MongoDB 使用 (<) 和 (>) 查询 - $lt 和 $gt

  • 获取"ruochen"集合中 “likes” 大于100,小于 200 的数据
  • db.ruochen.find(likes: $lt: 200, $gt: 100).pretty()
  • 类似SQL语句
  • Select * from ruochen where likes > 100 and likes < 200;

模糊查询

  • 查询title中包含 ‘py’ 的文档
  • db.ruochen.find(title:/py/).pretty()
  • 查询title字段以 ‘p’ 开头的文档
  • db.ruochen.find(title:/^p/).pretty()
  • 查询title 字段以 ‘p’ 结尾的文档
  • db.ruochen.find(title:/p$/).pretty()

MongoDB $type 操作符

  • $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果

类型

数字

备注

Double

1

 

String

2

 

Object

3

 

Array

4

 

Binary data

5

 

Undedined

6

已废弃

Object id

7

 

Boolean

8

 

Date

9

 

Null

10

 

Regular Experssion

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

 

  • 获取 “ruochen” 集合中 title 为 String 的数据
  • db.ruochen.find(‘title’: $type: 2).pretty()
  • db.ruochen.find(‘title’: $type: String).pretty()

Limit与Skip方法

Limit() 方法

  • 在MongoDB中读取指定数量的数据记录, 使用MongoDB的Limit方法
  • limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数
  • 语法
  • db.COLLECTION_NAME.find().limit(NUMBER)
  • 案例
  • db.ruochen.find().limit(2)

Skip() 方法

  • skip()方法跳过指定数量的数据
  • skip方法接受一个数字参数作为跳过的记录条数
  • 语法
  • db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
  • 案例
  • db.ruochen.find().limit(1).skip(1)

skip() 方法默认参数为0

MongoDB 排序

  • sort() 方法
  • sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列
  • 语法
  • db.COLLECTION_NAME.find().sort(key: 1)
  • 案例
  • ruochen 集合中的数据按字段 likes 的降序排列
  • db.ruochen.find().sort(‘likes’: -1).pretty()

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

MongoDB 索引

  • creatIndex() 方法
  • MongoDB使用 createIndex() 方法来创建索引
  • 语法
  • db.collection.createIndex(keys, options)
  • Key 值为你要创建的索引字段, 1 为指定按升序创建索引, -1 为降序创建索引
  • 案例
  • db.ruochen.createIndex(‘title’: 1)
  • db.ruochen.createIndex(‘title’: 1, ‘description’: -1) # 设置多个字段创建索引

createIndex() 接收可选参数,可选参数列表如下

Parameter

Type

Description

background

Boolean

建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 “background” 可选参数。 “background” 默认值为false

unique

Boolean

建立的索引是否唯一。指定为true创建唯一索引。默认值为false

name

string

索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称

dropDups

Boolean

3.0+版本已废弃。在建立唯一索引时是否删除重复记录,指定 true 创建唯一索引。默认值为 false

sparse

Boolean

对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为 false

expireAfterSeconds

integer

指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间

v

index version

索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本

weights

document

索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重

default_language

string

对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语

language_override

string

对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为 language

MongoDB聚合

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

aggregate() 方法

  • 语法
  • db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
  • 实例
  • db.ruochen.aggregate([KaTeX parse error: Expected , got EOF at end of input: group: _id: "by", num_tutorial: $sum: 1])
  • 类似于mql语句
  • select by, count(*) from ruochen group by by

聚合表达式

表达式

描述

实例

$sum

计算总和

db.ruochen.aggregate([KaTeX parse error: Expected , got EOF at end of input: group: _id: "by", num_tutorial: 如何安装,配置MongoDB?

MongoDB给数据库创建用户

MongoDB给数据库创建用户

mongoDB配置

mongodb基本操作

windows安装使用MongoDB

(c)2006-2024 SYSTEM All Rights Reserved IT常识