mongoDB的基本使用方法
MongoDB
安装(乌班图系统)
apt install mongodb
mongoDB与sql的对比
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表连接,MongoDB不支持 | |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
连接
命令连接:mongo
zj@zj-Lenovo:~$ mongo
MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.3
Server has startup warnings:
2020-06-21T08:27:21.842+0800 I STORAGE [initandlisten]
2020-06-21T08:27:21.842+0800 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2020-06-21T08:27:21.842+0800 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem
2020-06-21T08:27:27.401+0800 I CONTROL [initandlisten]
2020-06-21T08:27:27.401+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2020-06-21T08:27:27.401+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2020-06-21T08:27:27.401+0800 I CONTROL [initandlisten]
>
标准 URI 连接语法:
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
创建数据库
use database_name
例如:命令行执行
> use test
switched to db test
删除数据库
db.dropDatabase()
:删除当前数据库
例如:命令行执行
> use test
switched to db test
> db.dropDatabase()
{ "dropped" : "test", "ok" : 1 }
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
创建集合
db.createCollection("name",options)
:先创建集合
> db.createCollection("title")
{ "ok" : 1 }
db.collection.insert()
:直接创建并插入数据
> db.title.insert({"name":"mongoDB"})
WriteResult({ "nInserted" : 1 })
> db.title.find()
{ "_id" : ObjectId("5eeec83e9a6da52bb561a3a5"), "name" : "mongoDB" }
删除集合
db.collection.drop()
> db.title.drop()
true
插入文档
db.collection.insert()
> db.title.insert({"name":"mongoDB"})
WriteResult({ "nInserted" : 1 })
> db.title.find()
{ "_id" : ObjectId("5eeec83e9a6da52bb561a3a5"), "name" : "mongoDB" }
db.collection.save()
> db.title.save({"name":"mysql"})
WriteResult({ "nInserted" : 1 })
> db.title.find()
{ "_id" : ObjectId("5eeec83e9a6da52bb561a3a5"), "name" : "mongoDB" }
{ "_id" : ObjectId("5eeeca769a6da52bb561a3a6"), "name" : "mysql" }
更新文档
db.collection.update({query},{$set:{query}})
:默认只更新匹配条件的一条记录,如要更新全部,设置选项multi:true
例如:更新一条记录
> db.title.find()
{ "_id" : ObjectId("5eeec83e9a6da52bb561a3a5"), "name" : "mongoDB" }
{ "_id" : ObjectId("5eeeca769a6da52bb561a3a6"), "name" : "mysql" }
{ "_id" : ObjectId("5eeecb6e9a6da52bb561a3a7"), "name" : "mysql" }
{ "_id" : ObjectId("5eeecb719a6da52bb561a3a8"), "name" : "mysql" }
> db.title.update({"name":"mysql"},{$set:{"name":"redis"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.title.find()
{ "_id" : ObjectId("5eeec83e9a6da52bb561a3a5"), "name" : "mongoDB" }
{ "_id" : ObjectId("5eeeca769a6da52bb561a3a6"), "name" : "redis" }
{ "_id" : ObjectId("5eeecb6e9a6da52bb561a3a7"), "name" : "mysql" }
{ "_id" : ObjectId("5eeecb719a6da52bb561a3a8"), "name" : "mysql" }
更新多条
> db.title.find()
{ "_id" : ObjectId("5eeec83e9a6da52bb561a3a5"), "name" : "mongoDB" }
{ "_id" : ObjectId("5eeeca769a6da52bb561a3a6"), "name" : "redis" }
{ "_id" : ObjectId("5eeecb6e9a6da52bb561a3a7"), "name" : "mysql" }
{ "_id" : ObjectId("5eeecb719a6da52bb561a3a8"), "name" : "mysql" }
> db.title.update({"name":"mysql"},{$set:{"name":"redis"}},{multi:true})
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })
> db.title.find()
{ "_id" : ObjectId("5eeec83e9a6da52bb561a3a5"), "name" : "mongoDB" }
{ "_id" : ObjectId("5eeeca769a6da52bb561a3a6"), "name" : "redis" }
{ "_id" : ObjectId("5eeecb6e9a6da52bb561a3a7"), "name" : "redis" }
{ "_id" : ObjectId("5eeecb719a6da52bb561a3a8"), "name" : "redis" }
删除文档
db.collection.remove(query,justOne)
:默认删除匹配条件的所有记录,仅要删除一条,设置选项justOne:true或1
例如:删除name=redis的所有记录
> db.title.remove({"name":"redis"})
WriteResult({ "nRemoved" : 3 })
> db.title.find()
{ "_id" : ObjectId("5eeec83e9a6da52bb561a3a5"), "name" : "mongoDB" }
例如:仅删除符合条件的一条记录
> db.title.find()
{ "_id" : ObjectId("5eeec83e9a6da52bb561a3a5"), "name" : "mongoDB" }
{ "_id" : ObjectId("5eeecd339a6da52bb561a3a9"), "name" : "mysql" }
{ "_id" : ObjectId("5eeecd349a6da52bb561a3aa"), "name" : "mysql" }
{ "_id" : ObjectId("5eeecd359a6da52bb561a3ab"), "name" : "mysql" }
> db.title.remove({"name":"mysql"},true)
WriteResult({ "nRemoved" : 1 })
> db.title.find()
{ "_id" : ObjectId("5eeec83e9a6da52bb561a3a5"), "name" : "mongoDB" }
{ "_id" : ObjectId("5eeecd349a6da52bb561a3aa"), "name" : "mysql" }
{ "_id" : ObjectId("5eeecd359a6da52bb561a3ab"), "name" : "mysql" }
db.collection.remove({})
:删除所有记录,类似常规 SQL 的 truncate 命令
> db.title.remove({})
WriteResult({ "nRemoved" : 3 })
> db.title.find()
查询文档
db.collection.find()
> db.title.find()
{ "_id" : ObjectId("5eeec83e9a6da52bb561a3a5"), "name" : "mongoDB" }
{ "_id" : ObjectId("5eeecd349a6da52bb561a3aa"), "name" : "mysql" }
{ "_id" : ObjectId("5eeecd359a6da52bb561a3ab"), "name" : "mysql" }
db.collection.find().pretty()
:以人们较易阅读的方式显示查询结果
> db.title.find().pretty()
{ "_id" : ObjectId("5eeed9269a6da52bb561a3ac"), "name" : "mysql" }
{ "_id" : ObjectId("5eeed9289a6da52bb561a3ad"), "name" : "mysql" }
{ "_id" : ObjectId("5eeed9339a6da52bb561a3ae"), "name" : "redis" }
{ "_id" : ObjectId("5eeeda6a9a6da52bb561a3af"), "name" : "redis" }
{
"_id" : ObjectId("5eeeda959a6da52bb561a3b0"),
"name" : "redis",
"country" : "china"
}
MongoDB 与 RDBMS Where 语句比较
如果你熟悉常规的 SQL 数据,通过下表可以更好的理解 MongoDB 的条件语句查询:
操作 | 格式 | 范例 | RDBMS中的类似语句 |
---|---|---|---|
等于 | {key:value} | db.col.find({"by":"mongoDB"}).pretty() | where by = 'mongoDB' |
小于 | {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 |
and | {key1:value1, key2:value2} | db.col.find({"name":"mongoDB", "age":17}).pretty() | where name="mongoDB" and age=17 |
or | {$or:[{"key1":"value1"},{"key2": "value2"}]} | db.col.find({$or:[{"name":"mongDB教程"},{"title": "MongoDB"}]}).pretty() | where name="mongDB教程" or title="MongoDB" |
Limit与Skip方法
db.collection.find().limit(number)
例如:查询title集合中的前两条记录
> db.title.find().limit(2)
{ "_id" : ObjectId("5eeed9269a6da52bb561a3ac"), "name" : "mysql" }
{ "_id" : ObjectId("5eeed9289a6da52bb561a3ad"), "name" : "mysql" }
db.collection.find().limit(number).skip(number)
例如:跳过title集合中的第一条记录,查出两条记录
> db.title.find().limit(2).skip(1)
{ "_id" : ObjectId("5eeed9289a6da52bb561a3ad"), "name" : "mysql" }
{ "_id" : ObjectId("5eeed9339a6da52bb561a3ae"), "name" : "redis" }
排序
在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。
db.COllection.find().sort({key:1})
> db.title.find().sort({"likes":1})
{ "_id" : ObjectId("5eef0c5d9a6da52bb561a3b3"), "name" : "mongoDB", "likes" : 10 }
{ "_id" : ObjectId("5eef0c399a6da52bb561a3b1"), "name" : "mysql", "likes" : 12 }
{ "_id" : ObjectId("5eef0c489a6da52bb561a3b2"), "name" : "redis", "likes" : 32 }
创建索引
db.collection.createIndex(keys, options)
语法中 Key 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1 即可。
> db.title.createIndex({"likes":-1})
聚合函数
db.collection.aggregate()
:类似于sql语句中的count(*)
mongoDB的基本使用方法的更多相关文章
- MongoDB学习笔记~Update方法更新集合属性后的怪问题
回到目录 在对MongoDB进行封装后,对于Update更新对象里的集合属性时出现了一个现象,让人感到很恶心,人家更新前是个美丽的Array,但是更新之后集合对象变成了键值对,键是集合的类型名称,值是 ...
- windows下mongodb权限设置解决方法
mongodb简介: MongoDB 是一个跨平台的,面向文档的数据库,提供高性能,高可用性和可扩展性方便. MongoDB工作在收集和文件的概念. MongoDB默认设置为无权限访问限制,所以可以直 ...
- mongodb unclean shutdown 修复方法
启动mongodb时,提示Unclean shutdown detected mongodb,解决方法很简单 mongod --repair --dbpath D:\MongoDB\data\db
- MongoDB Limit与Skip方法
MongoDB Limit() 方法 如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的 ...
- mongodb windows的安装方法和添加到任务管理器中、检测是否成功、增删改查命令
转: mongodb安装方法: https://blog.csdn.net/heshushun/article/details/77776706 mongodb检测安装成功 .以及增删改 ...
- mongodb的安装配置方法
安装方法: https://docs.mongodb.com/manual/tutorial/install-mongodb-enterprise-on-red-hat/ 使用向导: https:// ...
- 【转】ubuntu 下安装mongodb php 拓展的方法
按照上面的方法安装成功之后,写一个 mongodb 的php测试脚本,用来测试是否可以 正确连接上mongodb ,并查询结果. 参考:http://php.net/manual/en/class.m ...
- MongoDb 快速翻页方法
翻阅数据是MongoDB最常见的操作之一.一个典型的场景是需要在你的用户界面中显示你的结果.如果你是批量处理的数据,同样重要的是要让你的分页策略正确,以便你的数据处理可以规模化. 接下来,让我们通过一 ...
- MongoDB shell 1 数据库方法
方法名 描述 db.cloneDatabase() 从指定主机上克隆数据库 db.currentOp() 显示当前正在进行的操作 db.commandHelp() 返回数据库命令的帮助信息 db.cr ...
随机推荐
- 【真相揭秘】requests获取网页编码乱码本质
有没有被网页编码抓狂,怎么转都是乱码. 通过查看requests源代码,才发现是库本身历史原因造成的. 作者是严格http协议标准写这个库的,<HTTP权威指南>里第16章国际化里提到,如 ...
- sql中partition的使用
https://www.cnblogs.com/tfiremeteor/p/6296599.html
- 50个SQL语句(MySQL版) 问题十
--------------------------表结构-------------------------- student(StuId,StuName,StuAge,StuSex) 学生表 tea ...
- ActiveMQ 笔记(一)概述与安装
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.消息中间件的产生背景 1.前言:考虑消息中间件的使用场景? 在何种场景下需要使用消息中间件 为什么要 ...
- Java实现 蓝桥杯 算法提高 上帝造题五分钟
算法提高 上帝造题五分钟 时间限制:1.0s 内存限制:256.0MB 问题描述 第一分钟,上帝说:要有题.于是就有了L,Y,M,C 第二分钟,LYC说:要有向量.于是就有了长度为n写满随机整数的向量 ...
- Java实现 蓝桥杯VIP 算法提高 理财计划
算法提高 理财计划 时间限制:1.0s 内存限制:256.0MB 问题描述 银行近期推出了一款新的理财计划"重复计息储蓄".储户只需在每个月月初存入固定金额的现金,银行就会在每个月 ...
- 第六届蓝桥杯JavaB组国(决)赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.分机号 X老板脾气古怪,他们公司的电话分机号都是3位数,老板规定,所有号码必须是降序排列,且不能有重复的数位.比如: 751,520, ...
- Java实现 蓝桥杯 历届试题 网络寻路
问题描述 X 国的一个网络使用若干条线路连接若干个节点.节点间的通信是双向的.某重要数据包,为了安全起见,必须恰好被转发两次到达目的地.该包可能在任意一个节点产生,我们需要知道该网络中一共有多少种不同 ...
- java实现串的反转
串的反转 反转串 我们把"cba"称为"abc"的反转串. 求一个串的反转串的方法很多.下面就是其中的一种方法,代码十分简洁(甚至有些神秘),请聪明的你通过给出 ...
- vue axios封装
前言: 对第三方库进行二次封装和抽离到统一模块,项目面对自己的模块进行开发.如果有一天更换库,只需要修改自己模块中的代码,无需对整个项目进行重构. 将axios网络请求库封装到network文件下的r ...