MongoDB基本操作增删改查

MongoDB基本操作

1.MongoDB默认存在的库

test:登录时默认存在的库

admin库:系统预留库,MongoDB系统管理库

local库:本地预留库,存储关键日志

config库:MongoDB配置信息库

2.MongoDB介绍

CRUD操作试create(创建),read(读取),update(更新)和delete(删除)文档。

MongoDB不支持多文档事务(MongoDB4.0开始支持ACID)。但是MongoDB确实在一个文档上提供了原子操作。尽管集合中的文档通常都是相同的,但是MongoDB中的集合不需要指定schema。

MongoDB不支持SQL但是支持主机的丰富的查询语言。

在MOngoDB中,存储在集合中的每一个文档都需要一个唯一的_id字段,作为主键。如果插入的文档省略了该id字段,则MongoDB驱动程序自动为该字段生成一个Objectld-id。也用于通过更新操作插入的文档upsert:true,如果文档包含一个-id字段,该-id值在集合中必须唯一的,一面重复错键错误。

在MongoDB中,插入操作针对单个集合。MongoDB中所有写操作都是在单个文档的级别上进行的。

3.MongoDB数据库常用命令

help显示帮助
db.help()显示数据库方法的帮助
db..help()显示收集方法的帮助,可以是现有的集合或不存在的集合的名称。
show dbs打印服务器上所有数据库的列表。
use将当前数据库切换到
show conllection打印当前数据库的所有集合的列表
show users打印当前数据库的用户列表
show roles打印用于当前数据库的用户定义和内置所有角色的列表
show roles打印当前数据库的用户列表
show profile打印需要1毫秒或更多的五个最近的操作
show databases打印所有可用数据库的列表。
load()执行一个javaScript文件。

4.MongoDB数据库显示命令

我们来登录数据库
[root@localhost mongo_clusetr]# ./mongodb/bin/mongo 192.168.40.2:27017
登录后模式是在test库查

4.1.查询已经存在的数据库

> show databases
admin   0.000GB
config  0.000GB
dba     0.000GB
local   0.000GB

> show dbs
admin   0.000GB
config  0.000GB
dba     0.000GB
local   0.000GB

4.2.切换数据库

> db
dba

> use local
switched to db local

> db
local

4.3.查看表信息

> show tables
dba

5.插入数据

5.1.单行插入数据

mongodb数据库创建一个表,直接使用use命令进行就创建了,如果里面建了表,在show dbs的时候才能看到,否则没有数据的情况下是看不到的

插入数据时不需要先创建表,在插入数据时会自动将表创建出来

语法格式: db.表名.insert({“字段1”:“值1”,“字段2”:“值2”})

我们执行这个命令之后
db.dba.insert({"name":"gao","age":20,"ad":"河北"}

使用use命令
use  dba进入到dba的库中在进行插入数据
可以手工进行多插入几条
> db.dba.insert({"name":"w","age":20,"ad":"河北"})
WriteResult({ "nInserted" : 1 })

使用show命令就可以查看到库了
> show dbs
admin   0.000GB
config  0.000GB
dba     0.000GB
local   0.000GB

我们查询插入的情况
> db.dba.find()
{ "_id" : ObjectId("630c6efef8102a9da15aff48"), "name" : "jiang", "age" : 20, "ad" : "河北" }
{ "_id" : ObjectId("630c6f0bf8102a9da15aff49"), "name" : "chaowei", "age" : 20, "ad" : "河北" }
{ "_id" : ObjectId("630c6f0ff8102a9da15aff4a"), "name" : "wu", "age" : 20, "ad" : "河北" }
{ "_id" : ObjectId("630c6f13f8102a9da15aff4b"), "name" : "gao", "age" : 20, "ad" : "河北" }
{ "_id" : ObjectId("630c6f86f8102a9da15aff4c"), "name" : "w", "age" : 20, "ad" : "河北" }

5.2.插入多行数据命令

语法格式:db.表名.insertMany([{“字段1”:“值1”,“字段2”:“值2”},{“字段1”:“值1”,“字段2”:“值2”}])

使用insertMany插入的数据,会自动生产ObjectId

语法:db.dba_1.insertMany([{}])

db.inventory.insertMany([
{"name":"zhangsan","age":22,"ad":"henan"},{"name":"lisi","age":22,"ad":"henan"},
{"name":"wangwu","age":22,"ad":"henan"}
])

{
	"acknowledged" : true,
	"insertedIds" : [
		ObjectId("630c85f6f8102a9da15aff52"),
		ObjectId("630c85f6f8102a9da15aff53"),
		ObjectId("630c85f6f8102a9da15aff54")
	]
}

5.3.查询表内容

查询单条

db.dba.find()查询所有单条插入的数据

> db.dba.find()
{ "_id" : ObjectId("630c6efef8102a9da15aff48"), "name" : "jiang", "age" : 20, "ad" : "河北" }
{ "_id" : ObjectId("630c6f0bf8102a9da15aff49"), "name" : "chaowei", "age" : 20, "ad" : "河北" }
{ "_id" : ObjectId("630c6f0ff8102a9da15aff4a"), "name" : "wu", "age" : 20, "ad" : "河北" }
{ "_id" : ObjectId("630c6f13f8102a9da15aff4b"), "name" : "gao", "age" : 20, "ad" : "河北" }
{ "_id" : ObjectId("630c6f86f8102a9da15aff4c"), "name" : "w", "age" : 20, "ad" : "河北" }
> 

查询多条插入的数据

db.inventory.find()查询多条插入的数据

db.inventory.find()
{ "_id" : ObjectId("630c85f6f8102a9da15aff52"), "name" : "zhangsan", "age" : 22, "ad" : "henan" }
{ "_id" : ObjectId("630c85f6f8102a9da15aff53"), "name" : "lisi", "age" : 22, "ad" : "henan" }
{ "_id" : ObjectId("630c85f6f8102a9da15aff54"), "name" : "wangwu", "age" : 22, "ad" : "henan" }

5.4.查询数据进行筛选

> db.inventory.find()
{ "_id" : ObjectId("630c85f6f8102a9da15aff52"), "name" : "zhangsan", "age" : 22, "ad" : "henan" }
{ "_id" : ObjectId("630c85f6f8102a9da15aff53"), "name" : "lisi", "age" : 22, "ad" : "henan" }
{ "_id" : ObjectId("630c85f6f8102a9da15aff54"), "name" : "wangwu", "age" : 22, "ad" : "henan" }
{ "_id" : ObjectId("630dafe6a0e00cb9a35e8cc1"), "name" : "zhang", "age" : 21, "ad" : "hebei" }
> 

我们来通过查询筛选出ad:hebei的数据

在find中写入对应的字段内容就可以进行筛选

> db.inventory.find({"ad":"hebei"})
{ "_id" : ObjectId("630dafe6a0e00cb9a35e8cc1"), "name" : "zhang", "age" : 21, "ad" : "hebei" }
> 

5.5.条件查询

这个表示小于$lt:数字

筛选age字段小于22的数据

举例:
> db.inventory.find({"ad":"hebei","age":{$lt:22}})
{ "_id" : ObjectId("630dafe6a0e00cb9a35e8cc1"), "name" : "zhang", "age" : 21, "ad" : "hebei" }
>

6.更新语句update

6.1.单条更新

update语法
db.inventory.updateOne({},#需要筛选的字段
{$set:{},#需要更新的内容
$currentDate:{"lastModified":true}#更新之后加上时间
})

我们先来查询一下这个集合中名叫张的内容
> db.inventory.find({"name":"zhang"})
{ "_id" : ObjectId("630dafe6a0e00cb9a35e8cc1"), "name" : "zhang", "age" : 21, "ad" : "25"}

下面我们来对他进行修改
把姓名改成zhangsan123、年龄改成25、同时修改地区
db.inventory.updateOne(
{"name":"zhang"},
{$set:
{"zhang":"zhang123","age":25,"ad":"河北"},
$currentDate:{"lastModified":true}
})

变更后
> db.inventory.find({"name":"zhang"})
{ "_id" : ObjectId("630dafe6a0e00cb9a35e8cc1"), "name" : "zhang", "age" : 25, "ad" : "河北", "lastModified" : ISODate("2022-08-30T08:10:30.513Z"), "zhang" : "zhang123" }

6.2.批量更新

批量更新语法

db.inventory.updateMany(
{},#需要筛选的字段
{$set:
{},#需要更新的内容
$currentDate:{"lastModified":true}#更新之后加上时间
})
首先我们查出来,age字段等于22的
> db.inventory.find({"age":22})
{ "_id" : ObjectId("630c85f6f8102a9da15aff52"), "name" : "zhangsan", "age" : 22, "ad" : "henan" }
{ "_id" : ObjectId("630c85f6f8102a9da15aff53"), "name" : "lisi", "age" : 22, "ad" : "henan" }
{ "_id" : ObjectId("630c85f6f8102a9da15aff54"), "name" : "wangwu", "age" : 22, "ad" : "henan" }
变更语法
小于23的数字全部改成24然后地区改成河北
db.inventory.updateMany(
{"age":{$lt:23}},
{$set:
{"age":24,"ad":"河北"},
$currentDate:{"lastModified":true}
})
变更完成的信息
> db.inventory.find()
{ "_id" : ObjectId("630c85f6f8102a9da15aff52"), "name" : "zhangsan", "age" : 24, "ad" : "河北", "lastModified" : ISODate("2022-08-30T08:43:44.872Z") }
{ "_id" : ObjectId("630c85f6f8102a9da15aff53"), "name" : "lisi", "age" : 24, "ad" : "河北", "lastModified" : ISODate("2022-08-30T08:43:44.872Z") }
{ "_id" : ObjectId("630c85f6f8102a9da15aff54"), "name" : "wangwu", "age" : 24, "ad" : "河北", "lastModified" : ISODate("2022-08-30T08:43:44.872Z") }
{ "_id" : ObjectId("630dafe6a0e00cb9a35e8cc1"), "name" : "zhang", "age" : 25, "ad" : "河北", "lastModified" : ISODate("2022-08-30T08:10:30.513Z"), "zhang" : "zhang123" }
>

7.删除命令

7.1.删除单条数据

来那这一条数据举例,进行删除操作

> db.inventory.find({"name":"zhang"})
{ "_id" : ObjectId("630dafe6a0e00cb9a35e8cc1"), "name" : "zhang", "age" : 25, "ad" : "河北", "lastModified" : ISODate("2022-08-30T08:10:30.513Z"), "zhang" : "zhang123" }

删除成功

语法:db.inventory.deleteOne({值1})

> db.inventory.deleteOne({"name":"zhang"})
{ "acknowledged" : true, "deletedCount" : 1 }

7.2.删除多条数据

查询数据

> db.inventory.find({"age":22})
{ "_id" : ObjectId("630dd858a0e00cb9a35e8cc2"), "name" : "lisi", "age" : 22, "ad" : "河南" }
{ "_id" : ObjectId("630dd85da0e00cb9a35e8cc3"), "name" : "wang", "age" : 22, "ad" : "河南" }

批量删除

> db.inventory.deleteMany({"age":22})
{ "acknowledged" : true, "deletedCount" : 2 }
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 32
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值