Live2D

MongoDB

1.安装

下载MongoDB

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.6-rc0.tgz

解压缩

tar -zxvf mongodb-linux-x86_64-rhel70-5.0.6-rc0.tgz

/etc/profile下面配置环境变量

export MONGODB_HOME=/home/wl/mongodb-linux-x86_64-rhel70-5.0.6-rc0 #文件安装路径
export PATH=$PATH:$MONGODB_HOME/bin

让配置文件生效

source /etc/profile

2.配置mongoDB

在bin目录下 建 datalogs文件夹,并在logs文件夹里面建一个mongodb.log文件

配置conf文件

vim mongodb.conf 
dbpath = /home/wl/mongodb-linux-x86_64-rhel70-5.0.6-rc0/data/db #数据文件存放目录
logpath = /home/wl/mongodb-linux-x86_64-rhel70-5.0.6-rc0/logs/mongodb.log #日志文件存放目录
port = 27017  #端口
fork = true  #以守护程序的方式启用,即在后台运行
auth=true #开启安全验证(可以不开启).
logappend=true #日志输出方式,日志append而不是overwrite

目录结构如下

mongodb文件夹/
├── bin

│   ├──data

│   ├      ├──db

│   ├── etc

│   ├      ├──mongodb.conf

│   ├── install_compass

│   ├── logs

│   ├       ├──mongodb.log

│   └── mongo

│   └── mongod

│   └── mongos

├── LICENSE-Community.txt

├── MPL-2

└── THIRD-PARTY-NOTICES

└── README

3.启动mongoDB

启动mongoDB

 mongod --config /etc/mongod.conf --fork

启动成功如下图所示

image

进入mongoDB数据库

./mongo

4.mongodb的使用

1.数据库的操作

1.创建数据库 wl:

注:如果数据库不存在,则创建数据库,否则切换到指定数据库。

use wl

查看所有的数据库

show dbs

image

发现并没有我们刚创建的数据库 wl, 要显示它,我们需要向 wl 数据库插入一些数据

db.wl.insert({"name":"小王"})

再次查看

image

2.删除数据库

db.dropDatabase()

image

2.集合的操作

1.创建集合

db.createCollection(name,options)

2.删除集合

db.collection.drop()

注: 通常情况下 直接使用use 关键字进行操作,自动区创建集合和数据库

3.CRUD操作
1.插入文档

插入一条数据,insert或save

save:如果 _id 主键存在则更新数据,如果不存在就插入数据

db.stu.insert({name:"张三",age:12})
db.stu.save({nmae:"小李",address:"北京市"})

在3.2版本以后新增了db.collection.insertOne() 和 db.collection.insertMany()两个方法

**db.collection.insertOne() **是向集合中插入一个文档

 db.stu.insertOne({language:"java",url:"spring.io"})

还可以以变量的形式进行控制

var document=db.stu.insertOne({school:"Normal University"})

再执行插入操作

db.stu.insert(document)

db.collection.insertMany()是向集合中插入一个或多个文档

db.stu.insertMany([{desc:"测试1",author:"没有梦想的java菜鸟",time:"2022-1-24"},{id:"1005",name:"kotlin菜鸟",time:"2022-1-20"},{desc:"测试2",author:"没有梦想",time:"2022-1-24"}])
2.更新文档

更新文档分为update()和save()两个方法

  • update()更新已经存在的文档
  • save()更新已经存在的文档.如果文档不存在就插入

Update():

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)
  • query:查询条件
  • update:更新后的对象
  • upsert:可选参数,如果存在更新的对象就更新,否则插入。默认为false
  • multi:可选参数,只更新找到的第一条记录。默认为false,如果为true,就把按条件查出来多条记录全部更新
  • writeConcern:可选参数,抛出异常的级别

实例

db.stu.update({'id':'1005'},{$set:{'id':'1055'}})

save():

db.stu.save({'id':'1006','language':'kotlin'},{$set:{'id':'1007','language':'java'}})
3.删除文档

语法格式如下:

db.collection.remove(
   <query>,
   <justOne>
)
  • query:删除文档的条件
  • justOne:设置为true或1,则只删除一个文档,不设置则删除所有匹配条件的文档
db.stu.remove({title:"新便签页"})

image

此时删除的是匹配的两个文档

4.查询文档

格式化方式阅读

db.stu.find().pretty()

image

条件查询

db.stu.find({age:{$gt:10}})

image

  • (>) 大于 - $gt
  • (<) 小于 - $lt
  • (>=) 大于等于 - $gte
  • (<= ) 小于等于 - $lte

按类型查找,查找name属性是字符串的记录

db.stu.find({"name":{$type:'string'}})

image

分页查询 limit 和 跳过数据 skip

 db.stu.find().limit(2)

image

跳过头两条数据,显示第2到4条数据

db.stu.find().limit(2).skip(2)

image

使用sort()方法对数据进行排序,1代表升序,-1代表降序

db.stu.find().sort({name:-1})

image

4.索引

在3.0.0版本之前使用 db.collection.ensureIndex()创建索引,之后的版本使用 db.collection.createIndex()

语法:

db.collection.createIndex(keys, options)

keys 表示创建索引的字段,options为1或-1,1代表升序

实例:

创建一个索引

db.stu.createIndex({"id":1})

![image-20220207143833198](/Users/wangliang/Library/Application Support/typora-user-images/image-20220207143833198.png)

查看集合的索引

db.stu.getIndexes()

查看集合索引大小

db.stu.totalIndexSize()

删除集合 所有索引

db.stu.dropIndexes()

删除集合指定索引

db.stu.dropIndex("id")

索引过期时间,类似于redis的过期 expire

db.stu.createIndex({"time":1},{expireAfterSeconds:40})

注:

索引关键字段必须是 Date 类型

单字段索引,混合索引不支持

非立即执行

10.kotlin连接Mongodb

1.导入gradle依赖
implementation("org.mongodb:mongo-java-driver:3.12.8")
2.获取连接-URL获取
val uri= MongoClientURI("url地址")
val client=MongoClient(uri)
3.CRUD

获取数据库,如果没有会自动创建

val database =client.getDatabase("Tga_test")

创建并获取集合

database.createCollection("tga")
val collection=database.getCollection("tga")

插入文档

// 创建文档
  val document = Document("title","大耳朵图图")
  .append("name","胡图图")
  .append("age","3")
  .append("address","翻斗花园")
  // 插入多条记录
  val list:MutableList<Document> = ArrayList()
  list.add(document)
  collection.insertMany(list)
  println("添加记录完成O(∩_∩)O哈哈~")

删除文档

collection.deleteOne(Filters.eq("key",ossPath.toString()))

更新文档

val doc1 = Document()
doc1.append("name","张三")
val doc2 = Document("$" + "set", doc1)
collection.updateOne(Filters.eq("title", "大耳朵图图"), doc2)

获取全部文档

 val findIterable = collection.find()
 val mongoCursor = findIterable.iterator()
 while (mongoCursor.hasNext()) {
   println(mongoCursor.next().toJson())
 }
posted @ 2022-01-24 11:39  没有梦想的java菜鸟  阅读(129)  评论(0编辑  收藏  举报