nosql之mongodb的数据库操作+集合的插入和更新操作

mongodb学习文档:
https://docs.mongoing.com/
一、数据库操作
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>,相当于sqlwhere
   <update>,相当于sqlset
   {
     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,加一个字段的实现并赋值, set,,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:"足球,篮球,乒乓球"}
}
)

猜你喜欢

转载自blog.csdn.net/weixin_44703894/article/details/114905533