MongoDB中有三个概念需要大家了解:数据库、集合、文档
数据库database: 数据库是一个仓库,在仓库中可以存放集合。
集合collection: 集合类似于数据,在集合中可以存放文档
文档document: 文档是最小的单位,存储和操作的内容就是文档
document这一点类似于ES中的数据结构。
NoSql Manager for MongoDB收费,在这里我使用的是Studio 3T
https://robomongo.org/
下载无脑下一步
显示数据库
show dbs
切换数据库,没有就新建一个
use admin
显示你在哪个数据库里
Db
删除当前你use的那个数据库
db.dropDatebase()
新建数据库
use 数据库名字
建完了show dbs不会立刻显示,因为刚才新建的数据库里面没有数据。所以显示不出来。
显示这个数据库中有什么集合
show collections
新建集合,在use 一个数据库的情况下
db.createCollections(name,options)
然后show dbs现在可以看到use的数据库了
删除集合 ,在现在这个Use的数据库的情况下
db.你想要的collectionname.drop()
然后就删掉了
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})
经过上面的讲述,能了解到一点,基于database来查询collections里的数据都是通过db.collcetion_name.方法 来进行操作的,同理。对document的查询,我们之前也在查看collection时用过,他就是find()方法。
find里面可以加参数,不加的话就是现实collection里所有的document。
如果一行一行的话不好看,可以再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 不等于
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。如果别的字段不想让他显示直接不在里面加。其他的想要显示的话直接把属性加进去就行了。
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的都给去重
导入依赖
org.springframework.boot spring-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")
等等…看后面的文章