简单的mongodb的学习使用,勿喷,有问题点出

什么是MongoDB ?

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统,无事务,数据安全回滚无法保证。

mongoDB的数据(文档)没有规范现在,可以随便插入

在高负载的情况下,添加更多的节点,可以保证服务器性能。

MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

mongodb 存储的是json数据(bson:二进制json)

mongodb的结构:

mongodb服务(数据库(database):仓库(集合(collection):数组存放(文档(document):最小单位,我们就是操作文档)))

在mongodb中我们不用自己手动创建数据库和集合,当我们创建文档时,如果文档所在集合和数据库不存在,它会自动创建集合和数据库。

mongodb加入数据时会自己创建一个唯一标识id

安装mongodb

http://dl.mongodb.org/dl/win32/x86_64 网站下载

解压可以直接使用

先创建数据库文件的存放位置

在MongoDB下创建data,在data下再创建db:D:\software\MongoDB\data\db

因为启动mongodb服务之前需要必须创建数据库文件的存放文件夹,否则命令不会自动创建,而且不能启动成功。

启动MongoDB服务

1.打开cmd命令行

2.进入D:\software\MongoDB\bin目录(注意:先输入d:进入d盘,然后输入cd D:\software\MongoDB\bin)

3.输入如下的命令启动mongodb服务:mongod --dbpath D:\software\MongoDB\data\db

简单的mongodb的学习使用,勿喷,有问题点出

在浏览器输入http://localhost:27017 (27017是mongodb的端口号)查看,若显示

简单的mongodb的学习使用,勿喷,有问题点出

则表示,连接成功。如果不成功,可以查看端口是否被占用。

但是在本地windows“服务”中,是没有配置上mongodb 服务的,可以打开“服务”看下

简单的mongodb的学习使用,勿喷,有问题点出

配置本地windows mongodb 服务

这样可设置为 开机自启动,可直接手动启动关闭,可通过命令行net start MongoDB 启动。该配置会大大方便。

1.先在data文件下创建一个新文件夹log(用来存放日志文件)

简单的mongodb的学习使用,勿喷,有问题点出

2.在Mongodb新建配置文件mongo.config

简单的mongodb的学习使用,勿喷,有问题点出

可能很多人都不会创建.config配置文件。那给大家介绍下简单的方法:

先创建一个mongo.txt文件,再打开,点击”另存为“,将底下的文件类型更改为”全部类型“,并更改文件名称为mongo.config。

这样就可以创建一个config的配置文件了。

3.用记事本打开*mongo.config* ,并输入:

dbpath=D:\software\MongoDB\data\db

logpath=D:\software\MongoDB\data\log\mongo.log

4.用管理员身份打开cmd:

可能还有很多人不会管理员身份打开cmd。这也介绍下:

在下图路径下找到cmd 的运行文件

简单的mongodb的学习使用,勿喷,有问题点出

然后右键,以管理员身份运行。打开后发现在顶端比普通打开的多了”管理员“三个字

简单的mongodb的学习使用,勿喷,有问题点出

5.配置windows服务:

cmd先跳转到 D:\software\MongoDB\bin目录下。

输入:mongod --config “D:\software\Mongodb\mongo.config” --install --serviceName “MongoDB”

即根据刚创建的mongo.config配置文件安装服务,名称为MongoDB。

简单的mongodb的学习使用,勿喷,有问题点出

完成后,再次查看本地的服务。

简单的mongodb的学习使用,勿喷,有问题点出

如果成功的话,会发现本地服务多了”MongoDB"服务。

这就大功告成了。哈哈~~~

可以通过:“开机自启动,可直接手动启动关闭,命令行net start MongoDB 启动”。

开启后,可以正常连接了。可以用pycharm等IDE连接,

配置环境变量

把文件路径 E:\mongodb64\mongodb\bin 添加到系统变量中 path中(添加了环境变量就可以控制台中使用命令使用了)

MongoRepository有以下方法

count()统计总数
count(Example< S > example)条件统计总数
delete(T entities)通过对象信息删除某条数据
deleteById(ID id)通过id删除某条数据
deleteALL(Iterable<? extends T> entities)批量删除某条数据
deleteAll() 清空表中所有的数据
existsById(ID id) 判断数据是否存在
exists(Example< T > example) 判断某特定数据是否存在
findAll() 获取表中所有的数据
findAll(Sort sort) 获取表中所有的数据,按照某特定字段排序
findAll(Pageable pageAble) 获取表中所有的数据,分页查询
findAll(Example< T > example) 条件查询
findAll(Iterable ids) 条件查询
findAll(Example< T > example,Pageable pageable) 条件分页查询
findAll(Example< T > example,Sort sort) 条件查询排序
findOneById(ID id) 通过id查询一条数据
findOne(Example example) 通过条件查询一条数据
insert(S entities) 插入一条数据
insert(Iterable< T > entities) 插入多条数据
save(S entities) 保存一条数据
saveAll(Iterable< T > entities)
save(Iterable< T > iterable) 加入多条数据

MongOdb基本命令:

ObjectId() mongodb自己创建的唯一标识id的命令

可以通过 -id 来自己设置唯一id(不推荐)

​ 示例:db.stus.insert({_id:18,name:“chenpeng”,age:18,gender:“男”})

数据库操作

​ show databases: 显示当前全部数据库

​ use 数据库名称: 进入指定的数据库

​ db: 显示当前所在位置数据库名称

​ show collections 显示数据库中的所有集合

​ db.collection.drop() 删除本集合

​ db.dropDatabase() 删除本数据库

数据库的crud操作:

添加:

​ 插入一个文 档:db.集合名称.insert(对象json)

​ 示例:db.stus.insert({name:“chenpeng”,age:18,gender:“男”})

​ 多条插入:db.集合名称.insert([{对象json},{对象json},{对象json}])

​ 示例:db.stus.insert([{name:“chenpeng”,age:18,gender:“男”},{name:“chenpeng”,age:18,gender:“男”}, {name:“chenpeng”,age:18,gender:“男”}])

​ 插入一条:db.集合名称.insertOne()

​ 插入多个(默认数组):db.集合名称.insertMany()

查询

​ 条件标签:

​ 如果你需要以易读的方式来读取数据,可以使用 pretty() 方法 db.col.find().pretty()

​ MongoDB AND 条件 db.col.find({key1:value1, key2:value2}).pretty()

​ MongoDB 与 RDBMS Where 语句比较

操作 格式 范例 RDBMS中的类似语句
等于 {:} db.col.find({"by":"菜鸟教程"}).pretty() where by = '菜鸟教程'
小于 {:{$lt:}} db.col.find({"likes":{$lt:50}}).pretty() where likes < 50
小于或等于 {:{$lte:}} db.col.find({"likes":{$lte:50}}).pretty() where likes <= 50
大于 {:{$gt:}} db.col.find({"likes":{$gt:50}}).pretty() where likes > 50
大于或等于 {:{$gte:}} db.col.find({"likes":{$gte:50}}).pretty() where likes >= 50
不等于 {:{$ne:}} db.col.find({"likes":{$ne:50}}).pretty() where likes != 50

​ MongoDB AND 条件 db.col.find({key1:value1, key2:value2}).pretty()

​ MongoDB OR 条件 db.col.find({$or: [{key1: value1}, {key2:value2}]}).pretty()

​ AND 和 OR 联合使用 db.col.find({“likes”: {$gt:50}, $or: [{“by”: “菜鸟教程”},{“title”: “MongoDB 教程”}]}).pretty()

查询当前集合的全部文档: db.集合名称.find() 查询出全部符合条件的文档

指定查询指定字段:db.inventory.find( { type: food}, { item: 1, qty: 1,age:0} ) 只查询item,qty字段,不显示age字段

​ 查询语句在find()里面加

​ 示例:db.stus.find({age:28})

​ db.stus.find({age:28,name:“陈鹏”})

​ db.集合名称.findOne() 查询符合条件的第一条

​ 示例:db.stus.finOne({age:28})

​ db.集合名称.find().count() 查询出数据的条数 .count()

​ 示例:db.stus.finOne({age:28}).count()

修改

​ db.集合名称.update(查询条件,修改内容) 修改文档 (要是修改了没有的属性会直接自动添加那个属性)(默认修改的是第一个符合的文档数据)

​ 默认是全部替换文档的全部属性

​ 示例:db.stus.update({name:“陈鹏”},{age:28}) 直接覆盖name为陈鹏的文档并且赋值上age为28(只有一个age属性了)

​ $set 指定修改某个属性

​ 示例:db.stus.update({name:陈鹏},{$set:{age:28,sex:“男”}}) 修改了name为陈鹏的age属性为28和sex属性为男

​ $unset 指点删除某个属性

​ 示例:db.stus.update({name:陈鹏},{$unset:{age:随便写}}) 删除了name为陈鹏的age属性

​ db.集合名称.updateMany(查询条件,修改内容) 修改全部符合条件的文档

​ 示例:db.stus.updateMany({name:陈鹏},{$set:{age:28,sex:“男”}}) 修改了全部name为陈鹏的age属性为28和sex属性为男

​ db.集合名称.updateOne(查询条件,修改内容) 修改第一个符合条件的文档

​ 示例:db.stus.updateOne({name:陈鹏},{$set:{age:28,sex:“男”}}) 修改了第一条name为陈鹏的age属性为28和sex属性为男

​ db.集合名称.replaceOne(查询条件,修改内容) 替换第一个符合条件的文档

​ 示例:db.stus.replaceOne({name:陈鹏},{$set:{age:28,sex:“男”}}) 替换了第一条name为陈鹏的文档,文档只有age属性为28和sex属性为男

删除

​ db.集合名称.remove(删除条件) 删除符合条件的文档(默认删除全部符合条件的文档,删除必须传参数)

​ 示例:db.stus.remove({age:20}) 删除了全部age为20的文档

​ db.集合名称.removeMany(删除条件) 删除全部符合的

​ db.集合名称.removeOne(删除条件) 删除第一条符合的

Mongodb的关系(一对一,一对多,多对多)

同过list数组写多个数据在里面做为属性,实现多对多和一对多

在 MongoDB 中使用 sort() 方法对数据进行排序

sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。

db.COLLECTION_NAME.find().sort({字段名:1})