test:登录时默认存在的库
admin库:系统预留库,MongoDB系统管理库
local库:本地预留库,存储关键日志
config库: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中所有写操作都是在单个文档的级别上进行的。
help | 显示帮助 |
---|---|
db.help() | 显示数据库方法的帮助 |
db..help() | 显示收集方法的帮助,可以是现有的集合或不存在的集合的名称。 |
show dbs | 打印服务器上所有数据库的列表。 |
use | 将当前数据库切换到 |
show conllection | 打印当前数据库的所有集合的列表 |
show users | 打印当前数据库的用户列表 |
show roles | 打印用于当前数据库的用户定义和内置所有角色的列表 |
show roles | 打印当前数据库的用户列表 |
show profile | 打印需要1毫秒或更多的五个最近的操作 |
show databases | 打印所有可用数据库的列表。 |
load() | 执行一个javaScript文件。 |
我们来登录数据库
[root@localhost mongo_clusetr]# ./mongodb/bin/mongo 192.168.40.2:27017
登录后模式是在test库查
> 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
> db
dba
> use local
switched to db local
> db
local
> show tables
dba
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" : "河北" }
语法格式: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")
]
}
查询单条
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" }
> 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" }
>
这个表示小于$lt:数字
筛选age字段小于22的数据
举例:
> db.inventory.find({"ad":"hebei","age":{$lt:22}})
{ "_id" : ObjectId("630dafe6a0e00cb9a35e8cc1"), "name" : "zhang", "age" : 21, "ad" : "hebei" }
>
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" }
批量更新语法
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" }
>
来那这一条数据举例,进行删除操作
> 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 }
查询数据
> 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 }