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的基本使用方法的更多相关文章

  1. MongoDB学习笔记~Update方法更新集合属性后的怪问题

    回到目录 在对MongoDB进行封装后,对于Update更新对象里的集合属性时出现了一个现象,让人感到很恶心,人家更新前是个美丽的Array,但是更新之后集合对象变成了键值对,键是集合的类型名称,值是 ...

  2. windows下mongodb权限设置解决方法

    mongodb简介: MongoDB 是一个跨平台的,面向文档的数据库,提供高性能,高可用性和可扩展性方便. MongoDB工作在收集和文件的概念. MongoDB默认设置为无权限访问限制,所以可以直 ...

  3. mongodb unclean shutdown 修复方法

    启动mongodb时,提示Unclean shutdown detected mongodb,解决方法很简单 mongod --repair --dbpath D:\MongoDB\data\db

  4. MongoDB Limit与Skip方法

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

  5. mongodb windows的安装方法和添加到任务管理器中、检测是否成功、增删改查命令

    转: mongodb安装方法: https://blog.csdn.net/heshushun/article/details/77776706        mongodb检测安装成功 .以及增删改 ...

  6. mongodb的安装配置方法

    安装方法: https://docs.mongodb.com/manual/tutorial/install-mongodb-enterprise-on-red-hat/ 使用向导: https:// ...

  7. 【转】ubuntu 下安装mongodb php 拓展的方法

    按照上面的方法安装成功之后,写一个 mongodb 的php测试脚本,用来测试是否可以 正确连接上mongodb ,并查询结果. 参考:http://php.net/manual/en/class.m ...

  8. MongoDb 快速翻页方法

    翻阅数据是MongoDB最常见的操作之一.一个典型的场景是需要在你的用户界面中显示你的结果.如果你是批量处理的数据,同样重要的是要让你的分页策略正确,以便你的数据处理可以规模化. 接下来,让我们通过一 ...

  9. MongoDB shell 1 数据库方法

    方法名 描述 db.cloneDatabase() 从指定主机上克隆数据库 db.currentOp() 显示当前正在进行的操作 db.commandHelp() 返回数据库命令的帮助信息 db.cr ...

随机推荐

  1. [Objective-C] 019_UIVIewController

    UIViewController是iOS程序中的一个重要组成部分,对应MVC设计模式的C,它管理着程序中的众多视图,何时加载视图,视图何时消,界面的旋转等. 1.UIViewController 创建 ...

  2. 【Hadoop】Hadoop的安装,本地模式、伪分布模式的配置

    Download hadoop-2.7.7.tar.gz 下载稳定版本的hadoop-2.7.7.tar.gz(我用的2.6.0,但是官网只能下载2.7.7的了) Required Software ...

  3. MyBatis(一) 概述与SQL定制、对象映射

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.MyBatis概述 1.mybatis简介 MyBatis 是支持定制化 SQL.存储过程以及高级映 ...

  4. Java实现 LeetCode 827 最大人工岛(DFS+暴力模拟)

    827. 最大人工岛 在二维地图上, 0代表海洋, 1代表陆地,我们最多只能将一格 0 海洋变成 1变成陆地. 进行填海之后,地图上最大的岛屿面积是多少?(上.下.左.右四个方向相连的 1 可形成岛屿 ...

  5. Java实现 第十一届 蓝桥杯 (高职专科组)省内模拟赛

    有错误的或者有问题的欢迎评论 十六进制数1949对应的十进制数 19000互质的数的个数 70044与113148的最大公约数 第十层的二叉树 洁净数 递增序列 最大的元素距离 元音字母辅音字母的数量 ...

  6. Java实现 蓝桥杯 算法提高 p1001

    算法提高 P1001 时间限制:1.0s 内存限制:256.0MB 提交此题  当两个比较大的整数相乘时,可能会出现数据溢出的情形.为避免溢出,可以采用字符串的方法来实现两个大数之间的乘法.具体来说 ...

  7. Java实现固定长度得01子串

    固定位数得01子串 Description 对于长度为n的一个01串,每一位都可能是0或1,一共有2 ^n 种可能.请按从小到大的顺序输出这2^n种01串. Input 包含多组数据,每组数据占一行, ...

  8. Java中抽象类与接口的详细说明

    首先简单的介绍一下抽象类: 定义是很简单的,我们这里不写官方的语言,我自己看着都烦,我们就用白话介绍,抽象类本质是一个类,没问题,那么类里面一般都是有方法的,方法包括方法名和方法体,这是常识对不对,那 ...

  9. java实现最大公约数

    编写一函数gcd,求两个正整数的最大公约数. 样例输入: 5 15 样例输出: 5 样例输入: 7 2 样例输出: 1 package adv92; import java.util.Scanner; ...

  10. 什么?你还不会获取地址栏(url)的值

    function getUrlParam(name) {//封装方法 var reg = new RegExp("(^|&)" + name + "=([^&am ...