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() //判断集合是否定长。

MongoDB 基础操作

2.1 插入文档并保存

从MongoDB3.2开始,db.collection_name.insertOne()一次性插入一条文档的命令;db.collection_name.insertMany()一次性插入多条文档的命令。

  1. 向mongodb指定集合里插入文档,在TRDB中相当于向表中插入记录。
  2. mongodb无需对数据存储结构进行定义,用插入命令写入数据的同时就自动建立相关内容。
  3. 语法: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批量插入

插入多条文档(利用中括号[ ],实现一次插入多条文档)
MongoDB 基础操作

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表示显示
MongoDB 基础操作

2.3 删除文档

  1. 使用db.集合名.remove({})
    假如,假设要删除shuju集合中所有“age”为20的文档:
    db.shuju.remove{“age”:20})

2.4 更新文档

  1. 当有些内存错误或者是有些内容变更时,需要更新数据库文档 更新单个文档:原子性。
  2. 更新多个文档:对每个文档是原子性的,但对整个更新操作,不具备原子性,存在前面的文档更新成功,而后面的更新失败。multi为true 则同时修改所有符合条件的文档记录
  3. 同时更新同一文档:需要等待,结果由时间靠后的更新操作决定。

更新方式: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)
MongoDB 基础操作

save()命令格式:db.collection.save(object)
参数说明:
object代表需要更新的对象,如果集合内部已经存在一个和object相同的"_id"的记录,Mongodb会把object对象替换集合内已存在的记录,如果不存在,则会插入object对象。
db.shuju.save({“name”:“高六娃”,“age”:100}) 没有此数据就插入。

2.4.1更新文档修改器(文档的部分数据进行修改)

(1)$inc (修改数值,做加法运算。可以将一个值增加和减少,只能针对数字类型)

MongoDB 基础操作

(2)$set (可以完成特定需求的修改,即修改某一值。如果指定的键不存在,则进行添加操作)

MongoDB 基础操作

(3)$push修改器 (可以完成数组的插入,在文档的最后插入,若键不存在,则自动在文档的后面追加数组类型的键值对)

原数据没有的 push后增加了
MongoDB 基础操作

(4)$ addToSet修改器,向数组中添加元素,如果存在则不添加

MongoDB 基础操作

(5)$mul 修改器,修改数值,做乘法运算

MongoDB 基础操作

(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修改器,删除一个字段。

MongoDB 基础操作
min修改器,给出的值与当前文档字段值进行比较,当给定值比较小时,则修改当前文档值为给定值;
max修改器,给出的值与当前文档字段值进行比较,当给定值比较大时,则修改当前文档值为给定值。
db.shuju.update({m:99},{$$ min:{m:50}})

db.shuju.update({m:50},{$$max:{m:100}})