参考菜鸟教程的mongoDB做的学习教程,很方便查找。

MongoDB学习记录

一.Mongodb介绍
二.Mongodb的安装
下载地址:https://www.mongodb.com/download-center/community
注意:mongod --dbpath d:\mogodb\data的cmd页面不能关闭。
Mongo.exe:启动mongodb shell(在这里操作 就像python一样)
其它安装操作参考(菜鸟教程)
三.基本操作

  1. “show dbs” 命令可以显示所有数据的列表。
  2. 执行 “db” 命令可以显示当前数据库对象或集合。
  3. 运行"use"命令,可以连接到一个指定的数据库。
  4. 保留的数据库名:
    admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
    local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
    config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

拓展:关系数据库管理系统:Relational Database Management System
5. capped collections:就是固定大小的collection
形式:db.createCollection(“mycoll”, {capped:true, size:100000})
6.元数
据数据库的信息是存储在集合中。它们使用了系统的命名空间:
dbname.system.*
7. MongoDB 数据类型
8. ObjectId:
ObjectId 类似唯一主键,可以很快的去生成和排序,包含 12 bytes,含义是:
前 4 个字节表示创建 unix 时间戳,格林尼治时间 UTC 时间,比北京时间晚了 8 个小时
接下来的 3 个字节是机器标识码
紧接的两个字节由进程 id 组成 PID
最后三个字节是随机数

9.时间戳:BSON 时间戳类型主要用于 MongoDB 内部使用。在大多数情况下的应用开发中,你可以使用 BSON 日期类型。
10.日期:表示当前距离 Unix新纪元(1970年1月1日)的毫秒数。日期类型是有符号的, 负数表示 1970 年之前的日期。
四.MnogoDB-连接

  1. 标准 URI 连接语法:
    mongodb://[username:password@]host1[:port1][,host2[:port2],…[,hostN[:portN]]][/[database][?options]]
    (1)mongodb:// 这是固定的格式,必须要指定。
    (2)username:password@ 可选项,如果设置,在连接数据库服务器之后,驱动都会尝试登陆这个数据库
    (3)host1 必须的指定至少一个host, host1 是这个URI唯一要填写的。它指定了要连接服务器的地址。如果要连接复制集,请指定多个主机地址。
    (4)portX 可选的指定端口,如果不填,默认为27017
    (5)/database 如果指定username:password@,连接并验证登陆指定数据库。若不指定,默认打开 test 数据库。

(6)?options 是连接选项。如果不使用/database,则前面需要加上/。所有连接选项都是键值对name=value,键值对之间通过&或;(分号)隔开
(7)标准的连接格式的多个选项
(8)连接没搞懂。
五. MongoDB 创建数据库
1.创建数据库的语法格式如下:
use DATABASE_NAME
2.查看所有数据库
show dbs
3.向数据库插入一些数据
Eg: db.runoob.insert({“name”:“菜鸟教程”})
六. MongoDB 删除数据库
1.删除数据库的语法格式:
db.dropDatabase()
2.集合删除语法格式:
db.collection.drop()
七. MongoDB 创建集合
1.创建一个集合的语法格式(类似数据库中的表)
db.createCollection(name, options)
参数说明:
name: 要创建的集合名称
options: 可选参数, 指定有关内存大小及索引的选项

4.查看已有集合
show tables/show collections
5.带参的createCollection()的用法:
创建固定集合 mycol,整个集合空间大小 6142800 KB, 文档最大个数为 10000 个:
db.createCollection(“mycol”, { capped : true, autoIndexId : true, size : 6142800, max : 10000 } )
6. 在 MongoDB 中,你不需要创建集合。当你插入一些文档时,MongoDB 会自动创建集合。
八. MongoDB 删除集合
1.删除集合语法格式:db.collection.drop()
2. 返回值:如果成功删除选定集合,则 drop() 方法返回 true,否则返回 false。
九. MongoDB 插入文档
1.插入文档:MongoDB 使用 insert() 或 save() 方法向集合中插入文档,语法如下:
db.COLLECTION_NAME.insert(document)
2.查看已插入文档
db. COLLECTION_NAME.find()
3.注意:插入文档你也可以使用 db.col.save(document) 命令。如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。
十. MongoDB 更新文档
1.update() 方法用于更新已存在的文档。语法格式如下:
db.collection.update(
,
,
{
upsert: ,
multi: ,
writeConcern:
}
)
参数说明:
query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如 , , ,inc…)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。
2. save() 方法
save() 方法通过传入的文档来替换已有文档。语法格式如下:
db.collection.save(
,
{
writeConcern:
}
)
参数说明:
document : 文档数据。
writeConcern :可选,抛出异常的级别。
3.mongodb修改器(火狐收藏里有)
十一. MongoDB 删除文档

  1. MongoDB remove()函数是用来移除集合中的数据。
    remove() 方法的基本语法格式如下所示:
    db.collection.remove(
    ,

    )
    2.6版本:
    db.collection.remove(
    ,
    {
    justOne: ,
    writeConcern:
    }
    )
    参数说明:
    query :(可选)删除的文档的条件。
    justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
    writeConcern :(可选)抛出异常的级别。
  2. 删除所有命令
    db.col.remove({})
    十二.MongoDB 查询文档
    1. find()查询文档语法格式:
    db.collection.find(query, projection)
    参数:
    query :可选,使用查询操作符指定查询条件
    projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:db.col.find().pretty()
pretty() 方法以格式化的方式来显示所有文档。
2. 除了 find() 方法之外,还有一个 findOne() 方法,它只返回一个文档。

  1. MongoDB AND 条件
    MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。
    语法格式如下:
    db.col.find({key1:value1, key2:value2}).pretty()
  2. MongoDB OR 条件
    MongoDB OR 条件语句使用了关键字 $or,语法格式如下:

db.col.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}).pretty()

  1. AND 和 OR 也可联合使用
    十三. MongoDB 条件操作符
    MongoDB中条件操作符有:
    (>) 大于 - $gt
    (<) 小于 - $lt
    (>=) 大于等于 - $gte
    (<= ) 小于等于 - $lte
    十四. MongoDB $type 操作符
    MongoDB 中可以使用的类型如下表所示:

十五. MongoDB Limit与Skip方法

  1. MongoDB Limit() 方法
    limit()方法基本语法如下所示:
    db.COLLECTION_NAME.find().limit(NUMBER)
    十六. MongoDB 排序

  2. MongoDB sort() 方法:
    sort()方法基本语法如下所示:
    db.COLLECTION_NAME.find().sort({KEY:1})
    注: sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。
    十七. MongoDB 索引

  3. createIndex() 方法()
    MongoDB使用 createIndex() 方法来创建索引。
    (注:在3.0.0 版本前创建索引方法为 db.collection.ensureIndex(),之后的版本使用了 db.collection.createIndex() 方法,ensureIndex() 还能用,但只是 createIndex() 的别名。)
    createIndex()方法基本语法格式如下所示:
    db.collection.createIndex(keys, options)
    注:语法中 Key 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1 即可。

  4. createIndex() 接收可选参数,可选参数列表如下:

(1)、查看集合索引:db.col.getIndexes()
(2)、查看集合索引大小:db.col.totalIndexSize()
(3)、删除集合所有索引:db.col.dropIndexes()
(4)、删除集合指定索引:db.col.dropIndex(“索引名称”)
十八. MongoDB 聚合

  1. aggregate() 方法:
    aggregate() 方法的基本语法格式如下所示:
    db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

  2. 下表展示了一些聚合的表达式:

  3. 管道的概念
    (MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。)
    聚合框架中常用的几个操作:
    $project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
    m a t c h : 用 于 过 滤 数 据 , 只 输 出 符 合 条 件 的 文 档 。 match:用于过滤数据,只输出符合条件的文档。 matchmatch使用MongoDB的标准查询操作。
    $limit:用来限制MongoDB聚合管道返回的文档数。
    $skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。
    $unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
    $group:将集合中的文档分组,可用于统计结果。
    $sort:将输入文档排序后输出。
    $geoNear:输出接近某一地理位置的有序文档。
    十九. MongoDB 复制(副本集)
    MongoDB复制结构图如下所示:

副本集特征:
N 个节点的集群
任何节点可作为主节点
所有写入操作都在主节点上
自动故障转移
自动恢复
2. MongoDB副本集设置
(1)、关闭正在运行的MongoDB服务器。
现在我们通过指定 --replSet 选项来启动mongoDB。–replSet 基本语法格式如下:
mongod --port “PORT” --dbpath “YOUR_DB_DATA_PATH” --replSet “REPLICA_SET_INSTANCE_NAME”
在Mongo客户端使用命令rs.initiate()来启动一个新的副本集。
我们可以使用rs.conf()来查看副本集的配置
查看副本集状态使用 rs.status() 命令
3. 副本集添加成员
rs.add() 命令基本语法格式如下:
rs.add(HOST_NAME:PORT)
注: 判断当前运行的Mongo服务是否为主节点可以使用命令db.isMaster() 。
二十. MongoDB 分片(满足MongoDB数据量大量增长的需求)

  1. MongoDB分片(看不懂,暂时也用不上)
    下图展示了在MongoDB中使用分片集群结构分布:

上图中主要有如下所述三个主要组件:
Shard:
用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个replica set承担,防止主机单点故障
Config Server:
mongod实例,存储了整个 ClusterMetadata,其中包括 chunk信息。
Query Routers:
前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。
二十一. MongoDB 备份(mongodump)与恢复(mongorestore)

  1. MongoDB数据备份
    mongodump命令脚本语法如下:
    mongodump -h dbhost -d dbname -o dbdirectory
    -h:
    MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
    -d:
    需要备份的数据库实例,例如:test
    -o:
    备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。

  2. mongodump 命令可选参数列表如下所示:

  3. MongoDB数据恢复
    mongorestore命令脚本语法如下:
    mongorestore -h <:port> -d dbname
    –host <:port>, -h <:port>:
    MongoDB所在服务器地址,默认为: localhost:27017
    –db , -d :
    需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
    –drop:
    恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!

    mongorestore 最后的一个参数,设置备份数据所在位置,例如:c:\data\dump\test。
    你不能同时指定 和 --dir 选项,–dir也可以设置备份目录。
    –dir:
    指定备份的目录
    你不能同时指定 和 --dir 选项。
    二十二. MongoDB 监控

  4. mongostat 命令
    eg: D:\set up\mongodb\bin>mongostat

  5. mongotop 命令
    D:\set up\mongodb\bin>mongotop
    带参数实例:
    E:\mongodb-win32-x86_64-2.2.1\bin>mongotop 10
    (10是参数 ,可以不使用,等待的时间长度,以秒为单位,mongotop等待调用之间。)

  6. eg: E:\mongodb-win32-x86_64-2.2.1\bin>mongotop –locks
    使用mongotop - 锁,这将产生以下输出:

输出结果字段说明:
ns:
包含数据库命名空间,后者结合了数据库名称和集合。
db:
包含数据库的名称。名为 . 的数据库针对全局锁定,而非特定数据库。
total:
mongod花费的时间工作在这个命名空间提供总额。
read:
提供了大量的时间,这mongod花费在执行读操作,在此命名空间。
write:
提供这个命名空间进行写操作,这mongod花了大量的时间。
二十三.学习studio 3T

  1. 增删改查。
    详情见: https://blog.csdn.net/qq_39530754/article/details/83064649
    二十四.mongodb+java
    // 连接到 mongodb 服务
    MongoClient mongoClient = new MongoClient( “localhost” , 27017 );

// 连接到数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase(“mycol”);
System.out.println(“Connect to database successfully”);

//获取一个集合(选中这个集合)
MongoCollection collection = mongoDatabase.getCollection(“test”);
System.out.println(“集合 test 选择成功”);

//插入文档
//1. 创建文档 org.bson.Document 参数为key-value的格式
Document document = new Document(“title”, “MongoDB”).
append(“description”, “database”).
append(“likes”, 100).
append(“by”, “Fly”);
//2. 创建文档集合List
List documents = new ArrayList();
documents.add(document);
//3. 将文档集合插入数据库集合中 mongoCollection.insertMany(List) 插入单个文档可以用 mongoCollection.insertOne(Document)
collection.insertMany(documents);
System.out.println(“文档插入成功”);

//更新文档 将文档中likes=100的文档修改为likes=200
collection.updateMany(Filters.eq(“likes”, 100),
new Document("$set",new Document(“likes”,200)));

//删除符合条件的第一个文档
collection.deleteOne(Filters.eq(“likes”, 200));
//删除所有符合条件的文档
collection.deleteMany (Filters.eq(“likes”, 200));

//检索所有文档
//1. 获取迭代器FindIterable
FindIterable findIterable = collection.find();
//2. 获取游标MongoCursor
MongoCursor mongoCursor = findIterable.iterator();
//3. 通过游标遍历检索出的文档集合
while(mongoCursor.hasNext()){
System.out.println(mongoCursor.next());
}

二十五.开始练习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伍六琪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值