安装MongoDB

centos7

vim /etc/yum.repos.d/mongodb-org-4.4.repo

添加:

[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
yum install -y mongodb-org

开启:

systemctl start mongod
mongo

连接到本地MongoDB服务器

MongoDB概念

SQL术语/概念 MongoDB术语/概念 解释/说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins 表连接,MongoDB不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键

“show dbs” 命令可以显示所有数据库(集合)

“db” 命令可以显示当前数据库对象或集合

有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。

​ admin: 从权限的角度来看,这是”root”数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
​ local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
​ config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将存放在 test 数据库中。

基本操作

数据库

创建数据库

use DATABASE_NAME
> use learn
switched to db learn
> db.learn.insertOne({"name":"mongodb"})
{
"acknowledged" : true,
"insertedId" : ObjectId("65db58e363bcf052b6605a78")
}
> show dbs
admin 0.000GB
config 0.000GB
learn 0.000GB
local 0.000GB

删除数据库

> use learn
switched to db learn
> db.dropDatabase()
{ "dropped" : "learn", "ok" : 1 }

集合

查看数据库中有什么集合

show collections

删除(创建)集合

> use learn
switched to db learn
> db.createCollection("test1")
{ "ok" : 1 }
> show tables
test1
> db.test1.drop()
true
> show tables
>

文档

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

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

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

插入文档

db.collection.insertOne() 用于向集合插入一个新文档

db.test1.insert({
title: 'this is title',
description: 'this is descruption',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
WriteResult({ "nInserted" : 1 })
db.test1.find()
{ "_id" : ObjectId("65db5ff563bcf052b6605a79"), "title" : "this is title", "description" : "this is descruption", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }

更新文档

先插入一个文档

db.test1.insert({
title: 'this is title',
description: 'this is descruption',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})

更新标题:

db.test1.update({'title':'this is title'},{$set:{'title':'title2'}})

更新多条相同(键值)

db.test1.update({'title':'this is title'},{$set:{'title':'title2'}}),{multi:true})

删除文档

db.test1.remove({'title':'title2'})

查询文档

以易读的方式呈现

db.test1.find().pretty()

条件操作符

  • (>) 大于 - $gt
  • (<) 小于 - $lt
  • (>=) 大于等于 - $gte
  • (<= ) 小于等于 - $lte
  • (!=)不等于 - $ne