MongoDB 学习笔记(原创)

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介: MongoDB 学习笔记mongodb数据库nosql一、数据库的基本概念及操作SQL术语/概念MongoDB术语/概念解释/说明databasedatabase数据库tablecollection数据库表/集合rowdocument数据记...

MongoDB 学习笔记

mongodb
数据库
nosql

一、数据库的基本概念及操作

SQL术语/概念 MongoDB术语/概念 解释/说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins 表连接,MongoDB不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键
  • 创建数据库
  1. use mydb 
  • 查看当前连接的数据库
  1. > db 
  2.  
  3. -> mydb 
  • 查看所有的数据库
  1. show dbs 
  2.  
  3. -> mydb 
  • 销毁数据库
  1. use local 
  2.  switched to db local 
  3. > db.dropDatabase() 

二、集合(Collection)的基本操作

  • 创建集合
  1. > db.creationCollection('users') 
  • 查看创建的集合
  1. show collections 
  • 删除集合
  1. > db.users.drop() 
  • 向集合中插入数据

1.insert()
插入数据时,如果 users 集合没有创建会自动创建。

  1. use mydb 
  2. switched to db mydb 
  3. > db.users.insert([ 
  4. ... { name : "jam", 
  5. ... email : "jam@qq.com" 
  6. ... }, 
  7. ... { name : "tom", 
  8. ... email : "tom@qq.com" 
  9. ... } 
  10. ... ]) 

2.使用 save()
插入数据时,如果 users 集合没有创建会自动创建。

  1. use mydb2 
  2. switched to db mydb2 
  3. > db.users.save([ 
  4. ... { name : "jam", 
  5. ... email : "jam@qq.com" 
  6. ... }, 
  7. ... { name : "tom", 
  8. ... email : "tom@qq.com" 
  9. ... } 
  10. ... ]) 
  • 更新数据
    db.COLLECTION_NAME.update(SELECTION_CRITERIA,UPDATED_DATA)
  1. use mydb2 
  2. switched to db mydb2 
  3. > db.mysb2.update({'name':'jam'},{'name':'bob'}) 
  • 删除数据
    db.COLLECTION_NAME.remove(DELECTION_CRITERIA)
  1. use mydb2 
  2. switched to db mydb2 
  3. > db.mydb2.remove({'name':'tom'}) 
操作语句 作用
db.createCollection('COLLECTION_NAME') 创建集合
db.COLLECTION.drop() 删除集合
db.COLLECTION_NAME.insert(document) 插入文档
db.COLLECTION_NAME.update(SELECTION_CRITERIA,UPDATED_DATA) 更新文档
db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA}) 替换已存在的文档
db.COLLECTION_NAME.remove(DELECTION_CRITERIA) 删除文档

三、数据查询

  • find() 语句
  1. use mydb 
  2. switched to db mydb 
  3. > db.mydb.insert({'name':'mars','age':12,'gender':'man'}) 

1.不加参数时返回所有记录

  1. > db.mydb.find() 
  2. { "_id" : ObjectId("589dc5f3e86d38da8455b314"), "name" : "marsggbo" } 
  3. { "_id" : ObjectId("589dcac5e86d38da8455b315"), "name" : "mars", "age" : 12, "gender" : "man" } 

2.带参数

  1. use mydb 
  2. > db.mydb.find({'name':'mars'}) 
  3. "_id" : ObjectId("589dcac5e86d38da8455b315"), "name" : "mars""age" : 12"gender" : "man" } 

2.1 条件操作符1

(>) 大于 - $gt #greate
(<) 小于 - $lt #low
(>=) 大于等于 - $gte #equal
(<= ) 小于等于 - $lte

2.2 条件操作符2

  • type
  1. $type 

type的值:

双精度型-1
字符串-2
对象-3
数组-4
二进制数据-5
对象ID-7
布尔类型-8
数据-9
空-10
正则表达式-11
JS代码-13
符号-14
有作用域的JS代码-15
32位整型数-16
时间戳-17
64位整型数-18
Min key-255
Max key-127

范例:

  1. use student 
  2. switched to db student 
  3. > db.student.find({"name":{$type:2}}) 

查找name是字符串的文档记录

  • limit和skip

limit:读取指定数量的数据记录 -limit
skip:读取时跳过指定数量的数据记录

首先查看student集合中年龄大于20的数据

  1. use student 
  2. switched to db student 
  3. > db.student.find({'age':{$gt:20}}) 
  4. "_id" : ObjectId("589dcf6d6ac83b9ae69f63e6"), "name" : "z""sex" : "m 
  5. an""age" : 23 } 
  6. "_id" : ObjectId("589dcf8f6ac83b9ae69f63e8"), "name" : "z""sex" : "m 
  7. an""age" : 29 } 
  8. "_id" : ObjectId("589dd11ce3b6b824fd0620e9"), "age" : 22"name" : "ab 
  9. ""sex" : "woman" } 

限制只显示一个数据后,默认显示最前面的数据
(第一行命令不用重复编写,这里是因为markdown解析非得加上这句话才能高亮。。。)

  1. use student 
  2. switched to db student 
  3.  
  4. > db.student.find({'age':{$gt:20}}).limit(1) 
  5. "_id" : ObjectId("589dcf6d6ac83b9ae69f63e6"), "name" : "z""sex" : "m 
  6. an""age" : 23 } 

跳过一条数据,则可猜想显示结果为第二个数据

  1. use student 
  2. switched to db student 
  3.  
  4. > db.student.find({'age':{$gt:20}}).limit(1).skip(1) 
  5. "_id" : ObjectId("589dcf8f6ac83b9ae69f63e8"), "name" : "z""sex" : "m 
  6. an""age" : 29 } 
  • pretty() 语句
    作用是使查询输出的结果更美观
  1. use mydb 
  2. > db.mydb.find().pretty() 
  3. "_id" : ObjectId("589dc5f3e86d38da8455b314"), "name" : "marsggbo" } 
  4. { 
  5.  "_id" : ObjectId("589dcac5e86d38da8455b315"), 
  6.  "name" : "mars", 
  7.  "age" : 12, 
  8.  "gender" : "man" 
  9. } 
  • sort() 排序

与sqlite中的排序一样有升序和降序,其中升序用1表示,降序用-1表示

示例

  1. use student 
  2. switched to db student 
  3. > db.student.find().sort({'age':1}) 
  4. "_id" : ObjectId("589dcf866ac83b9ae69f63e7"), "name" : "z""sex" : "f 
  5. eman""age" : 19 } 
  6. "_id" : ObjectId("589dd11ce3b6b824fd0620e9"), "age" : 22"name" : "ab 
  7. ""sex" : "woman" } 
  8. "_id" : ObjectId("589dcf6d6ac83b9ae69f63e6"), "name" : "z""sex" : "m 
  9. an""age" : 23 } 
  10. "_id" : ObjectId("589dcf8f6ac83b9ae69f63e8"), "name" : "z""sex" : "m 
  11. an""age" : 29 } 

总结:
可以使用find进行查询,sort用于排序,ensureIndex用于建立索引,aggregate用于聚合。 

原文出处:marsggbo的博客

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
12月前
|
NoSQL 算法 Linux
MongoDB学习笔记(五) 集群搭建之副本集
MongoDB学习笔记(五) 集群搭建之副本集
351 0
|
12月前
|
NoSQL Linux MongoDB
MongoDB学习笔记(四) 集群搭建之主从复制
MongoDB学习笔记(四) 集群搭建之主从复制
526 0
|
12月前
|
分布式计算 NoSQL MongoDB
MongoDB学习笔记(三) 聚合
MongoDB学习笔记(三) 聚合
98 0
|
12月前
|
JSON NoSQL 关系型数据库
MongoDB学习笔记(二) 增删改查
MongoDB学习笔记(二) 增删改查
145 0
|
12月前
|
NoSQL 数据可视化 Linux
MongoDB学习笔记(一) 安装配置
MongoDB学习笔记(一) 安装配置
895 0
|
存储 缓存 NoSQL
Spring Boot2.5 实战 MongoDB 与高并发 Redis 缓存|学习笔记
快速学习 Spring Boot2.5 实战 MongoDB 与高并发 Redis 缓存
424 0
Spring Boot2.5 实战 MongoDB 与高并发 Redis 缓存|学习笔记
|
存储 SQL JSON
走进 MongoDB|学习笔记
快速学习走进 MongoDB
195 0
走进 MongoDB|学习笔记
|
存储 监控 NoSQL
MongoDB 快速入门-MongoDB 最佳实践(二)|学习笔记
快速学习 MongoDB 快速入门-MongoDB 最佳实践(二)
418 0
MongoDB 快速入门-MongoDB 最佳实践(二)|学习笔记
|
SQL 存储 分布式计算
MongoDB 聚合框架|学习笔记
快速学习 MongoDB 聚合框架
376 0
MongoDB 聚合框架|学习笔记
|
存储 JSON NoSQL
MongoDB 简介&amp;体系结构&amp;数据模型&amp; | 学习笔记
快速学习 MongoDB简介&amp;体系结构&amp;数据模型&amp;
148 0
MongoDB 简介&amp;体系结构&amp;数据模型&amp; | 学习笔记