MongoDB学习笔记三

目录

1.数据库增删

1.1数据库创建

 1.2数据库删除

 2.集合增删

2.1创建集合

 2.2删除集合

 3.文档增删改查

3.1查询文档

3.2创建文档

3.3删除文档

3.4更新/修改文档

4.其他类型操作

4.1条件操作

4.2类型操作

4.3分页查询


1.数据库增删

1.1数据库创建

数据库创建语法格式:

use DatabaseName

在mongodb中使用use与在mysql中使用use database一致,都是选择需要使用的数据库;不同的是当mongodb中不存在该数据库,那么它会自动创建该数据库;

mongodb中默认的数据库为 test,如果你没有创建新的数据库,那么你所创建的集合将默认存放在 test 数据库中

注意:新建的数据库中,如果没有集合,那么它就是空的数据库,下次重新选择时又会重新创建,如果要保存该数据则请随便插入一个集合;

 1.2数据库删除

数据库删除语法格式:

db.dropDatabase()

删除当前数据库,默认为 test,你可以使用 db 命令查看当前数据库名

下面我们来删除demo数据库,以图片为例

 2.集合增删

2.1创建集合

创建集合语法:

db.createCollection(collectionName);

db.createCollection(collectionName, options);

直接使用db.createCollection(collectionName),则集合会使用默认的参数创建指定名字的集合

使用db.createCollection(collectionName, options),则需要手动指定参数,例如:

db.createCollection("demo", {size: 10000, max:10000})

options参数说明:

字段类型描述
capped布尔(可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。
当该值为 true 时,必须指定 size 参数。
autoIndexId布尔3.2 之后不再支持该参数。(可选)如为 true,自动在 _id 字段创建索引。默认为 false。
size数值(可选)为固定集合指定一个最大值,即字节数。
如果 capped 为 true,也需要指定该字段。
max数值(可选)指定固定集合中包含文档的最大数量。

 2.2删除集合

删除集合语法:

db.collectionName.drop()

删除成功返回true,删除失败返回false;

我们可以通过show tables或show collections来查看已有的集合

 3.文档增删改查

3.1查询文档

语法格式:

db.collectionName.find()

db.collectionName.find().pretty()  // 格式化显示所有文档

查询所有:

db.collectionName.find()

查询指定条件:

db.collectionName.find({"age":24})

 多条件查询:

db.collectionName.find({key:value,key:value,key:value,...})

db.collectionName.find({$or:[{key:value},{key:value},....]})

and查询:

or查询:

 and和or查询联合使用:

 大小条件语句查询:

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

3.2创建文档

创建文档语法格式:

db.collectionName.insert(document)

db.collectionName.save(document)

save():如果 _id 主键存在则更新数据,如果不存在就插入数据。该方法新版本中已废弃,可以使用 db.collection.insertOne() 或 db.collection.replaceOne() 来代替。

insert(): 若插入的数据主键已存在,则抛出 org.springframework.dao.DuplicateKeyException 

异常,提示主键重复,不保存当前数据。

3.2 版本之后新增了 db.collection.insertOne() 和 db.collection.insertMany()

insertOne():

 insertMany():

以上是一般的正常插入语句写法,接下来我们玩点高级的,通过不知道大家有主要到我上面插入语句中写的document吗?是的,接下来我们使用document对象插入,展示:

除了我这里用的insertOne()方法你当然也可以使用insert(document)或save(document)

当然你也可以写多个document,然后使用insertMany()插入

语法insertMany([document1,document2,do........])

3.3删除文档

语法格式:

db.collectionName.remove()

删除示例:

需要注意, 直接使用remove()会删除所有的数据,如果只需要删除一条数据那么需要加上remove({},1)

3.4更新/修改文档

语法格式:

db.collectionName.update(<query>,<updatedata>)

db.collectionName.save(document)

详细的介绍属性如图:

参数说明:

query : update的查询条件,类似sql update查询内where后面的。

update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的

upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。

multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

writeConcern :可选,抛出异常的级别。

实际上使用的时候没有这么复杂,我们只需要在(<query>,<updatedata>)query中输入条件,在updatedata中输入更新数据即可,例如:

如此更新只会修改一条数据,所以我们需要为他添加另一条参数实现批量修改,如图:

 更多实例:

说明语法演示
只更新第一条记录db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );
全部更新db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );
只添加第一条db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );
全部添加进去db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );
全部更新db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );
只更新第一条记录db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );

4.其他类型操作

4.1条件操作

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

示例:db.col.find({age:{$gt:100}});

2023/6/29更新:更全的条件操作符

$eq:匹配指定字段值等于给定值的文档。
使用方式:
db.collection.find({ field: { $eq: value } });

$ne:匹配指定字段值不等于给定值的文档。
使用方式:
db.collection.find({ field: { $ne: value } });

$gt:匹配指定字段值大于给定值的文档。
使用方式:
db.collection.find({ field: { $gt: value } });

$gte:匹配指定字段值大于或等于给定值的文档。
使用方式:
db.collection.find({ field: { $gte: value } });

$lt:匹配指定字段值小于给定值的文档。
使用方式:
db.collection.find({ field: { $lt: value } });

$lte:匹配指定字段值小于或等于给定值的文档。
使用方式:
db.collection.find({ field: { $lte: value } });

$in:匹配列表中包含给定值的文档。
使用方式:
db.collection.find({ field: { $in: [value1, value2, ...] } });

$nin:匹配列表中不包含给定值的文档。
使用方式:
db.collection.find({ field: { $nin: [value1, value2, ...] } });

$exists:匹配包含指定字段的文档。
使用方式:
db.collection.find({ field: { $exists: true } });

$regex:使用正则表达式匹配字段值的文档。
使用方式:
db.collection.find({ field: { $regex: "pattern" } });

$or:使用逻辑或运算符匹配多个条件的文档。
使用方式:
db.collection.find({ $or: [{ condition1 }, { condition2 }, ...] });

$and:使用逻辑与运算符匹配多个条件的文档。
使用方式:
db.collection.find({ $and: [{ condition1 }, { condition2 }, ...] });

$not:对给定条件取反。
使用方式:
db.collection.find({ field: { $not: { condition } } });

$type:匹配指定字段类型的文档。
使用方式:
db.collection.find({ field: { $type: type } });

$elemMatch:在数组字段中进行嵌套查询。
使用方式:
db.collection.find({ arrayField: { $elemMatch: { condition } } });

$size:匹配数组字段长度等于给定值的文档。
使用方式:
db.collection.find({ arrayField: { $size: value } });

4.2类型操作

类型对应数字
Double1
String2
Object3
Array4
Binary data5
Object id7
Boolean8
Date9
Null10

示例:db.col.find({“name”:{$type:2}})或db.col.find({“name”:{$type:'string'}});

4.3分页查询

如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。

示例:db.collectionName.find().limit(NUMBER)

除了可以使用limit()方法来读取指定数量的数据外,还可以使用skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。

示例:db.collectionName.find().limit(NUMBER).skip(NUMBER)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值