MongoDB 基础操作
1.数据库操作
1.创建数据库 use “数据库名” 例子:use zuoye
2.数据库信息统计 db.stats( )
3.查看数据库 show dbs
4.删除数据库 db.dropDatabase( )
2.集合操作
- 显示数据库集合 show collections
- 创建集合 db.createCollection(‘数据库名’)
- 获取数据库集合信息 db.getCollectionInfos()
- 重命名数据库集合 db.“原集合名”.renameCollection(‘新集合名’) 例子:db.test1.renameCollection(‘mycal’)
- 删除集合db.“集合名”.drop() 例子,删除mycal集合:db.mycal.drop()
- db.createCollection(“myCollection”,{capped:true,size:10000})
capped:是否定长,true为定长
size:集合中文档数量大小(以字节为单位)
Max: 指定集合中允许的最大文档数 - db.myCollection.isCapped() //判断集合是否定长。
2.1 插入文档并保存
从MongoDB3.2开始,db.collection_name.insertOne()一次性插入一条文档的命令;db.collection_name.insertMany()一次性插入多条文档的命令。
- 向mongodb指定集合里插入文档,在TRDB中相当于向表中插入记录。
- mongodb无需对数据存储结构进行定义,用插入命令写入数据的同时就自动建立相关内容。
-
语法:db.COLLECTION_NAME.insert(document)
db为数据库名,COLLECTION_NAME为集合名,insert为插入文档命令;三者用“.”连接。
例子2.1.1单独插入
db.shuju.insert({_id:1,‘name’:‘nosql’})
注意: _id和ObjectId,_id 是文档的唯一标示,ObjectId是_id的缺省产生办法。不指定_id的值,自动创建,指定_id的值,取指定值上面例子 就是指定 _id 为 1。
例子2.1.2批量插入
插入多条文档(利用中括号[ ],实现一次插入多条文档)
2.2 查找文档
MongoDB数据库建立集合,并插入文档后,可以用查询文档命令查看数据。
语法:db.collection.find(query, projection)
query :可选,使用查询操作符指定查询条件
projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
例子2.2.1
查询集合所有文档:db.shuju.find(),db.shuju.find().pretty()
查询集合一个文档:db.shuju.findOne()
注意 :符号都是英文的
例子2.2.12
等价价条件查询
公共条件查询:{< key1>:< value1 > , < key2>:< value2>…},多条件时进行与(and)条件查询。
条件查询例子:db.shuju.find( { “_id”:1,“name”:“java” } )
显示隐藏查询 :在条件语句的 < value> 如果取值为0表示不显示这个键值对,默认或者1表示显示
2.3 删除文档
- 使用db.集合名.remove({})
假如,假设要删除shuju集合中所有“age”为20的文档:
db.shuju.remove{“age”:20})
2.4 更新文档
- 当有些内存错误或者是有些内容变更时,需要更新数据库文档 更新单个文档:原子性。
- 更新多个文档:对每个文档是原子性的,但对整个更新操作,不具备原子性,存在前面的文档更新成功,而后面的更新失败。multi为true 则同时修改所有符合条件的文档记录
- 同时更新同一文档:需要等待,结果由时间靠后的更新操作决定。
更新方式:update,save
update命令格式:db.collection.update(criteria,objNew,upsert,multi)
参数说明:
criteria:查询条件
objNew:update对象和一些更新操作符
upsert:如果不存在update的记录,是否插入objNew这个新的文档,true为插入,默认为false,不插入。
multi:默认是false,只更新找到的第一条记录。如果为true,把按条件查询出来的记录全部更新。
要求:把所有x为1的数据改为99
采用命令:
db.集合名.update({x:1},{$set:{x:99}},false,true)
save()命令格式:db.collection.save(object)
参数说明:
object代表需要更新的对象,如果集合内部已经存在一个和object相同的"_id"的记录,Mongodb会把object对象替换集合内已存在的记录,如果不存在,则会插入object对象。
db.shuju.save({“name”:“高六娃”,“age”:100}) 没有此数据就插入。
2.4.1更新文档修改器(文档的部分数据进行修改)
(1)$inc (修改数值,做加法运算。可以将一个值增加和减少,只能针对数字类型)
(2)$set (可以完成特定需求的修改,即修改某一值。如果指定的键不存在,则进行添加操作)
(3)$push修改器 (可以完成数组的插入,在文档的最后插入,若键不存在,则自动在文档的后面追加数组类型的键值对)
原数据没有的 push后增加了
(4)$ addToSet修改器,向数组中添加元素,如果存在则不添加
(5)$mul 修改器,修改数值,做乘法运算
(6)$rename修改器,修改错误字段的键名。
把第一个 x:99的键名(key)从x变为m:
db.mycol.update({x:99},{$rename:{x:“m”}})
修改结果:
{ “_id” :ObjectId(“59f00d4a2844ff254a1b68f7”),“m" :99 }
{ “_id” :ObjectId(“59f00d4a2844ff254a1b68f8”), “x” :99 }
(7)$unset修改器,删除一个字段。
min修改器,给出的值与当前文档字段值进行比较,当给定值比较小时,则修改当前文档值为给定值;
max修改器,给出的值与当前文档字段值进行比较,当给定值比较大时,则修改当前文档值为给定值。
db.shuju.update({m:99},{$$ min:{m:50}})
db.shuju.update({m:50},{$$max:{m:100}})