MongoDB
Prerequisite
Mongodb 相对于 Mysql,前者能处理 Json 格式文件,对数据文件处理更加友好
Mongodb 官方下载链接:https://www.mongodb.com/try/download/community
MongoDB Compass 官方下载链接:https://www.mongodb.com/try/download/compass
MongoDB Shell 官方下载链接:https://www.mongodb.com/try/download/shell
MongoDB Database Tools 下载链接:https://www.mongodb.com/try/download/database-tools?tck=docs_databasetools
初始化
Mongodb 下载到 D 盘
Custom -> Data Directory 和 Log Directory -> 去掉 Install MongoDB Compass 的勾
MongoDB Shell 也下载到 D 盘
安装包解压到 D 盘
MongoDB Compass 默认下载到 C 盘
然后将 D:\Software\MongoDB\bin
和 D:\Software\Mongosh\bin
添加到 path
在 D 盘根目录创建文件夹 D:\Mongo_data\db
和 D:\Mongo_data\log
# 以管理员方式运行
# 启动 Mongodb 服务(一直启动)
mongod --dbpath "D:\Mongo_data\db" --logpath "D:\Mongo_data\log\mongodb.log" --serviceName "mongodb" --serviceDisplayName "mongodb" --install
# 在 “服务” 程序中,手动启动 Mongodb 进程(需要关闭时停止即可)
# 查看服务 http://127.0.0.1:27017/
# 另开一个终端(连接 Mongodb)
mongosh
使用说明
PS:MongoDB 区分大小写,但不区分 " 和 '
- 基本用法
# 显示所有数据的列表
show dbs
# 显示当前数据库(默认是 test)
db
# 进入数据库(如果没有会自动创建)
use new
# 进入默认数据库(不存在,但能显示)
use test
# 删除数据库(需要 use 进入后再删除)
db.dropDatabase()
# 插入数据
db.new.insert({"name":"tuanzi"})
# 清空命令
cls
- 集合
# 查看已有集合
show collections
# 创建集合 ctf
db.createCollection("ctf")
# 删除集合 ctf
db.ctf.drop()
- 文档
# 查看集合 ctf 中的文档内容
db.ctf.find().pretty()
# 插入一个文档(如果集合不存在,则自动创建)
db.ctf.insertOne({title: '团子',
description: 'MongoDB 是一个 Nosql 数据库',
by: 'tuanzi',
url: 'http://www.tuanzi.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
# 插入多个文档
db.ctf.insertMany([{"a":1}, {"b":2}])
# 更新第一条文档
db.ctf.update({'title':'团子'}, {$set:{'title':'筱团'}})
# 更新全部文档
db.ctf.update({'title':'团子'}, {$set:{'title':'筱团'}}, {multi:true})
# 删除集合下全部文档
db.ctf.deleteMany({})
# 删除 title 等于 团子 的一个文档
db.ctf.deleteOne( { title : "团子" } )
# 删除 title 等于 团子 的全部文档
db.ctf.deleteMany({ title : "团子" })
- 索引【推荐文章:MongoDB索引详解】
说白了,索引就是决定以某种方式排序的方法
# 索引查询
db.ctf.getIndexes()
# v:索引版本
# key:1 表示索引是按照升序构建的
# name:索引名称
# 索引创建
db.ctf.createIndex({name:1});
# db.ctf.createIndex(<keys>, <options>)
# keys:指定了创建索引的字段
# options:指定成 1 或者 -1 表示升序或降序
# 删除索引
db.members.dropIndex("索引名称")
PyMongo(Python use MongoDB)
from pymongo import MongoClient
import pprint
client = MongoClient('localhost', 27017)
db = client['new']
collection = db['ctf']
pprint.pprint(collection.find_one())
Mongo shell 编写脚本
官方文档:为 mongo Shell 编写脚本
编写脚本的文件格式是 JavaScript,支持交互式脚本和静态脚本,这里侧重说一下静态脚本
首先编写 js 脚本(以打印数据库全部的集合为例)
printjson(db.getCollectionNames())
然后进入 mongodb 数据库,再运行 js 脚本
mongosh
# 进入数据库,根据脚本而执行的命令
use new
# 脚本的位置
load("C:\\Users\\WPS\\Desktop\\Temporary\\mongo.js")
MongoDB 导出导入
mongoimport 官方文档
mongoexport 官方文档
MongoDB Database Tools 下载到 D 盘
将 D:\Software\Mongotools\bin
添加到 path
# 导出 JSON(数据库 new 的集合 ctf)
mongoexport --collection=ctf --db=new --out=C:\Users\WPS\Desktop\data.json
# 导入 JSON(数据库 new 的集合 ctf2)
mongoimport --collection=ctf2 --db=new --file=C:\Users\WPS\Desktop\data.json