查看数据库列表 show dbs
创建数据库mydb use mydb
查看当前选择的数据库 db
插入数据 db.movie.insert({"name":"tutorialsyiibai"})
删除当前数据库 db.dropDatabase()
创建mycollection集合 格式:db.createCollection(name,options)
db.createCollection(“mycollection”) 不带选项
可选选项:
选项 | 类型 | 描述 |
capped | Boolean | 如果为true,则启用封顶集合。封顶集合是固定大小的集合,会自动覆盖最早的条目,当它达到其最大大小。如果指定true,则需要也指定尺寸参数。 |
autoIndexID | Boolean | 如果为true,自动创建索引_id字段的默认值是false。 |
size | number | 指定最大大小字节封顶集合。如果封顶如果是 true,那么你还需要指定这个字段。 |
max | number | 指定封顶集合允许在文件的最大数量。 |
db.createCollection("mycol", { capped : true, autoIndexID :true, size : 6142800, max : 10000 } )带参数集合
查看集合 show collections
删除集合: db.mycol.drop()
插入文档 如果该数据库中不存在col集合,则自动创建集合并插入文档
db.col.insert({title:'MongoDB 学习',
description: 'MongoDB 是一个 Nosql数据库',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
更新文档
Update方法格式
db.collection.update( <query>, update的查询条件,类似sql update查询内where后面的。 <update>, update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的 { upsert: <boolean>, 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。 multi: <boolean>, 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。 writeConcern: <document> 可选,抛出异常的级别。 } )
“$set”
向文档中添加或更新字段
db.col.update({'title':'MongoDB 学习'},{“$set”:{'title':'MongoDB' ,"by":"菜鸟教"}})
把标题更新并添加by字段
db.col.update({"score":96},{"$set":{"title":"PHP 学习","by":"菜鸟教程","likes":50,"tags":["PHP","MongoDB","Java"]}}) 类上
“$unset”
从文档中移除指定的字段
db.col.update({"title":"PHP教程"},{"$unset":{"likes":1}})
从文档中移除likes字段
“$inc”
用来增加已有键的值,或者在键不存在时创建一个键。$inc就是专门来增加(和减少)数字的。"$inc"只能用于整数、长整数或双精度浮点数。要是用在其他类型的数据上就会导致操作失败。
db.col.update({"title":"PHP 教程"},{"$inc":{"pageviews":1}})
“$rename”
重命名字段、也可以将子文档中键值移到其他子文档中。
db.col.update({"title":"PHP 学习教程"},{"$rename":{"pageviews":"pageview"}})
将pageviews字段重命名为pageview
"$setOnInsert"
当update方法使用upsert选项upsert: true执行insert操作时,$setOnInsert操作符给相应的字段赋值。若update方法执行的update操作而不是insert操作,那么$setOnInsert操作符将无效。
数组更新操作操作符-----只能用在键值为数组的键上的数组操作。
$ (query)
· 定位操作符("$")作为第一个匹配查询条件的元素的占位符,也就是在数组中的索引值。
· 数组字段必须出现查询文档中。
"$push" 如果指定的键已经存在,会向已有的数组末尾加入一个元素,要是没有就会创建一个新的数组。
db.table.update({"sno":1},{$push:{"comments":{"name":"apple","content":"thank!"}}})
db.table.update({"sno":1},{"$push":{"courses":"历史"}})
"$pull"
操作符移除指定字段值为数组,且匹配$pull语句声明的查询条件的所有元素。db.table.update({"sno":1},{"$pull":{"courses":""}})
移除courses数组中所有历史元素
db.profiles.update( { votes: 3 }, { $pull: { votes: { $gt: 6 } } } );移除votes数组中所有大于6的元素"$pushAll"
用法同$push一样,只是$pushAll可以一次追加多个值到一个数组字段内。db.table.update({"sno":1},{"$pushAll":{"courses":["历史","历史"]}})
"$pop"删除数组内第一个值:{$pop:{ "courses":-1}}、删除数组内最后一个值:{$pop:{ "courses":1}}db.table.update({"sno":1},{"$pop":{"courses":1}})"$addToSet"
加一个值到数组内,而且只有当这个值在数组中不存在时才增加。
db.table.update({"sno":1},{"$addToSet":{"cousers":"语文"}})
save方法 格式 db.collection.save(obj)
obj代表需要更新的对象,如果集合内部已经存在一个和obj相同的"_id"的记录,Mongodb会把obj对象替换集合内已存在的记录,如果不存在,则会插入obj对象。
db.collection.save( <document>, 文档数据。 { writeConcern: <document> 可选,抛出异常的级别。 } )
db.table.save({"name":"王五","age":25,"sex":"男","score":99,"sno":3,"num":1,"course":["政治","地理","历史"]})
删除文档格式
db.collection.remove( <query>, (可选)删除的文档的条件。 { justOne: <boolean>, (可选)如果设为 true 或 1,则只删除一个文档。 writeConcern: <document> (可选)抛出异常的级别。 } )
db.col.remove({'title':'MongoDB学习'},{justOne:1})只删除一个标题为MongoDB学习的文档。
db.col.remove({}) 删除所有的数据
查询文档
db.col.find().pretty() 查询所有文档
db.col.find({"likes":{$gte:50}}).pretty()查询likes大于等于50的文档
db.col.find({"likes ":100,"title":"MongoDB 学习"}).pretty()
查询likes为100,并且title为MongoDB学习的文档
db.col.find({$or:[ {"likes":100},{"title": "MongoDB学习"}]}).pretty()
查询likes为100,或title为MongoDB学习的文档
db.col.find({},{"title":1,_id:0,”likes”:1})
查询只显示title,likes字段
$type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果。
Double:1 String:2 Object:3 Array:4 Binarydata:5 Object id:7
Boolean:8 Date:9 Null:10 Regular Expression:11 JavaScript:13
32-bitinterger:16 Timestamp:17 64-bit interger:18 Min key:255 Max key:127
limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数
db.col.find().limit(2).pretty() 显示前两条记录
skip()方法来跳过指定数量的数据,skip方法接受一个数字参数作为跳过的记录条数。
db.col.find({},{"title":1,_id:0}).limit(1).skip(1) 只显示第二条记录的title字段
sort()方法可以通过参数指定排序的字段,并使用 1和 -1来指定排序的方式,其中1为升序排列,而-1是用于降序排列。默认升序排列。
db.col.find({},{"title":1,_id:0,”likes”:1}).sort({"likes":-1}) 按likes降序排序
索引
ensureIndex()方法创建索引。(可接受的一些参数未列出)
db.col.ensureIndex({"title":1,"description":-1}) 1为指定按升序创建索引,-1为降序。
db.values.ensureIndex({"title":1,"description":-1},{background: true})
加了参数background以后台方式创建索引
聚合----主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果
聚合框架中的常用操作:
$project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
$match:用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。
$limit:用来限制MongoDB聚合管道返回的文档数。
$skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。
$unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
$group:将集合中的文档分组,可用于统计结果。
$sort:将输入文档排序后输出。
$geoNear:输出接近某一地理位置的有序文档。
db.mycol.aggregate( [
{ $match : { score : {$gt : 70, $lte : 90 } } },
{ $group: { _id: null,count: { $sum: 1 } } }
] );
$match用于获取分数大于70小于或等于90记录,然后将符合条件的记录送到下一阶段$group管道操作符进行处理。
聚合的方法使用aggregate()
db.mycol.aggregate([{$group : {_id : "$by_user",num_tutorial : {$sum : 1}}}])
通过字段by_user字段对数据进行分组,并计算by_user字段相同值的总和
db.mycol.aggregate([{$group : {_id :"$by_user", num_tutorial : {$sum : "$likes"}}}])
通过字段by_user字段对数据进行分组,并计算likes字段的总和
$avg 计算平均值$min获得最小值 $max获得最大值
$push在结果文档中插入值到一个数组中,$addToSet在结果文档中插入值到一个数组中,但不创建副本
$first根据文档的排序获取第一个文档数据,$last根据文档的排序获取最后一个文档数据