nosql之mongodb的数据库操作集合的插入和更新操作
nosql之mongodb的数据库操作+集合的插入和更新操作
mongodb学习文档:
一、数据库操作
1.数据库use存在就使用,不存就创建
use test1;
查看所有数据库
show dbs;
切换当前数据库
use test1;
查看当前数据库
db
查看当前数据库所有的集合
show tables;
查看集合中的所有数据(条件查询时,如果使用了集合中没有的字段不会报错,但没结果)
db.students.find({})//花括号可加可不加
删除数据库
在当前数据库下运行db.dropDatabase()(有表也可以删除,而hive有表的话就不能删除数据库)
删除集合(nosql和hive不管表中有没有数据都可以直接删除)
db.users.drop();
删除集合所有文档
db.inventory.deleteMany({}) 必须带着花括号
update修改已有的文档可以同时新增字段
insert添加新的文档同时可以新增字段
二、insert操作
insert({})插入空的时候必须带花括号
格式
db.collection.insertMany(
[ <document 1> , <document 2>, ... ],
{
writeConcern: <document>,
ordered: <boolean>
}
)
1…集合不需要预定义,插入数据自动创建,字段创建不受限,插入同时可以随意添加新字段,也可以不插入某一字段的值
db.students.insert({
name:'zb1',
age:1001,
hello:1
}
)
2…插入动作使用insert()函数 db.collection_name.insert()
3.插入时间,支持js,new Date()
db.students.insert({
name:'zb11',
age:10011,
hello:11,
sex:"male",
addtime:new Date()//系统时间(格林威治时间,晚8小时),服务器时间不可修改,前端时间可以修改
}
)
db.students.find()
4.插入多条记录,数组文档注意[ ],即使是插入一条,使用insertmany()也要用[ ]
db.students.insertMany([{
name:'zb11',
age:10011,
hello:13,
sex:"male",
addtime:new Date()//系统时间(格林威治时间),服务器时间不可修改,前端时间可以修改
},
{
name:'zb11',
age:10011,
hello:14,
sex:"male",
addtime:new Date()//系统时间(格林威治时间),服务器时间不可修改,前端时间可以修改
}]
)
5.insert = insertmany,insertone只插一个
三、update
3.1修改器:后面跟{key:value}
{$set:{status:'pending'}}
1.$set如果存在这个字段则更新,不存在则创建
2.$currentDate()更新创建时间,不存在则自动创建 修改器:
3.$inc 更新数字字段并加n ,n必须是整数 ,1是加1,-1是减1
3.2查询器:前面是key,后面根条件vlaue
{age:{$gte:10}}
等于: :/$eq
大于:$gt
大于等于:$gte
小于:$lt
小于等于:$lte
不等于:$ne
格式:
db.collection.updateMany(
<filter>,相当于sql的where
<update>,相当于sql的set
{
upsert: <boolean>,//默认false,ture表示没有这个条文档的话自动创建
writeConcern: <document>,
collation: <document>,
arrayFilters: [ <filterdocument1>, ... ],
hint: <document|string> // Available starting in MongoDB 4.2.1
}
)
updateMany(),
1.修改器:
s e t , 加 一 个 字 段 的 实 现 并 赋 值 , set,加一个字段的实现并赋值,
s
e
t
,
加
一
个
字
段
的
实
现
并
赋
值
, set如果存在这个字段则更新,不存在则创建
db.students.updateMany({},{$set:{sex:'male'}})
2.修改器:$currentDate更新创建时间,不存在则自动创建
db.students.updateMany({status:'stop'},{$currentDate:{createtime:true}})
3.update,updateOne只更新一条
db.students.updateOne({age:11},{$set:{age:10,status:'ok'}})
4.updateMany()更新多条 == update students set status=“stop” where status=“ok”
db.students.updateMany({status:'ok'},{$set:{status:'stop'}})
5.replaceOne(),用第二个文档替换之前匹配到的文档
db.students.replaceOne({status:'ok'},{status:'stop',name:"xiao qi" ,age:10,num:1})
6.如果之前匹配不到这个文档 {upsert:true}自动创建后面的新的文档
db.students.replaceOne({status:'o'},{status:'stop',name:"xiao qi" ,age:10,num:1},{upsert:true})
7.年龄大于等于20的学生全部状态改为pending
db.students.updateMany(
{age:{$gte:10}},{$set:{status:'pending'}}
)
8.将年龄大于10岁的学生年龄+1并且记录修改时间使用修改器$inc更新数字字段并加n
db.students.updateMany(
{age:11},{$inc:{age:1},$currentDate:{createtime:true}}
)
9.为小明新增一个字段爱好(aihao)
db.students.updateMany(
{
stuname:"小明"
},
{
$set:{aihao:"足球,篮球,乒乓球"}
}
)