MongoDB的入门及使用
创始人
2024-04-22 03:07:22
0

文章目录

  • 1、MongoDB组成
  • 2、基本指令
  • 3、安装Studio 3T
  • 4、操作语句
    • db操作
    • collection操作
    • document操作
    • document 查询
  • 5、开发使用

1、MongoDB组成

MongoDB中有三个概念需要大家了解:数据库、集合、文档
数据库database: 数据库是一个仓库,在仓库中可以存放集合。
集合collection: 集合类似于数据,在集合中可以存放文档
文档document: 文档是最小的单位,存储和操作的内容就是文档

document这一点类似于ES中的数据结构。

2、基本指令

在这里插入图片描述

3、安装Studio 3T

NoSql Manager for MongoDB收费,在这里我使用的是Studio 3T

https://robomongo.org/

下载无脑下一步
在这里插入图片描述

4、操作语句

db操作

显示数据库

show dbs

切换数据库,没有就新建一个

use admin

显示你在哪个数据库里

Db

删除当前你use的那个数据库

db.dropDatebase()

新建数据库

use 数据库名字

建完了show dbs不会立刻显示,因为刚才新建的数据库里面没有数据。所以显示不出来。

collection操作

显示这个数据库中有什么集合

show collections

新建集合,在use 一个数据库的情况下

db.createCollections(name,options)

然后show dbs现在可以看到use的数据库了
删除集合 ,在现在这个Use的数据库的情况下

db.你想要的collectionname.drop()

然后就删掉了

document操作

collectionname代指相对应的collcetion名字(mysql里叫表,Mongodb里叫collection,都是一个数据库里的一种结构) 现在操作的不是表也不是集合,而是集合里的一个数据结构叫做document,文档,文档相当于mysql里的一个记录行。

往collection里加数据,直接新建document

db.collectionname.insert({"name":"wangzirui"})

增加多条要在insert的多个对象的外面加一个中括号,表示这是一个对象数组。

db.collectionname.insert([{name:"wangzirui"},{name:"laoli"}])

查看collection里的数据

db.collectionname.find()

Save,在_id一样的情况下可以不报错,然后直接覆盖掉刚才重复Id的内容。

db.collectionsname.save({_id:1001,name:"laowang",age:22})

更新document数据

db.collectionname.update({当前数据},{替换数据},{配置项})
db.collectionname.update({name:"laotie"},{name:"ergou"})

这样会删除其他内容,只存在一个name :ergou 所以要加$set保留其他的参数

db.collectionname.update({name:"laotie"},{$set:{name:"ergou"}})

配置项里加{Multi:true}加一个这个的话可以让多个name:"laotie"一起改

db.collectionname.update({name:"laotie"},{$set:{name:"ergou"}},{multi:true})

删除document内容,如果不加第二个参数,默认是把集合里的符合第一条的都删掉。

Db.collectionname.remove({name:"laotie"},{justOne:true})

document 查询

经过上面的讲述,能了解到一点,基于database来查询collections里的数据都是通过db.collcetion_name.方法 来进行操作的,同理。对document的查询,我们之前也在查看collection时用过,他就是find()方法。

find里面可以加参数,不加的话就是现实collection里所有的document。

  • find()方法里可以加条件,例如db.collectionname.find({age:18})

如果一行一行的话不好看,可以再db.collectionname.find({age:18})后面加.pretty()

  • 比较运算符

less than 小于 KaTeX parse error: Expected '}', got 'EOF' at end of input: …name.find(age:{lt:18})
less than equal 小于等于 $lte
Geater than 大于 $gt
$gte 大于等于
$ne 不等于

  • 取范围内的 $in

KaTeX parse error: Expected '}', got 'EOF' at end of input: …ame.find({age:{in:[10,20,30]}})

  • 并操作

db.collection_name.find(age:18,name:“laotie”)

  • 或操作

db.collection_name.find({$or:[{age:18},{name:“laotie”}]}

  • 正则

db.collection_name.find({age:/1/})或者db.collection_name.find({age:$regex:“1”})

  • 限制和跳过,一般用于分页

limit(2)
skip(2)

  • 投影

比如说find({这里放具体参数},{这里放投影})
db.collection_name.find({age:{$lt:18}},{_id:0,age:1}) 这样只会显示每个对象里面只有一个age选项了
注意,如果投影里不加_id的选项的话 ,默认是自动显示的。只能给_id设置 0。如果别的字段不想让他显示直接不在里面加。其他的想要显示的话直接把属性加进去就行了。

  • 通过Js函数来筛选数据

KaTeX parse error: Expected '}', got 'EOF' at end of input: …ion_name.find({where:function(){
Return age>10}})

  • 根据某个字段排序

sort
db.collection_name.find().sort({age:1}) 如果降序的话要带-1

  • 计数

count()
直接在查询出来的后面加上就可以显示了
db.collection_name.find({$where:function(){
Return age>10}}).count()

  • 去重

db.student.distinct(“name”,{“age” : 18})
这样可以直接把name一样还有age为18的都给去重

5、开发使用

导入依赖

org.springframework.bootspring-boot-starter-data-mongodb

在配置文件中配置链接:

spring:data:mongodb:uri: mongodb://${base.config.mongodb.user}:${base.config.mongodb.password}@${base.config.mongodb.hostname}:${base.config.mongodb.port}/admin

将依赖在项目中注入

	@Resourceprivate MongoTemplate mongoTemplate;

简单使用:
插入:spillwayGate为插入的对象

mongoTemplate.insert(spillwayGate, "OPCGate");

计数:

mongoTemplate.count(query, "OPCGate")

等等…看后面的文章

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...