MongoDB基础学习笔记
数据库操作
- 创建、转到:
use <database name>
- 当前数据库:
db
- 所有数据库(新建的数据库要插入数据才会显示):
show db
- 删除数据库:
db.dropDatabase()
集合操作
- 所有集合:
show tables
- 删除集合:
db.<table name>.drop()
文档操作
- 插入数据(集合不存在自动创建):
db.<table name>.insert({"col name":"value"})
- 查询文档:
db.<table name>.find()
- 插入或更新(指定_id则是更新):
db.<table name>.save({"col name":"value"})
-
插入多条(3.2版本以上):
db.<table name>.insertOne({"a": 3})
db.<table name>.insertMany([{"b": 3}, {'c': 4}]) -
更新文档:
db.<table name>.update(
<query>, //查询条件
<update>, //更新内容
{
upsert: <boolean>, //不存在是否插入
multi: <boolean>, //只更新找到的第一条记录
writeConcern: <document> //抛出异常的级别
}
)
db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
//只更新第一条记录
db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );
//全部更新
db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );
//只添加第一条
db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );
//全部添加加进去
db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );
//全部更新
db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );
//只更新第一条记录
db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false ); -
删除文档
db.<table name>.remove(
<query>, //(可选)删除的文档的条件
{
justOne: <boolean>, //(可选)如果设为 true 或 1,则只删除一个文档
writeConcern: <document> //(可选)抛出异常的级别
}
)
//删除title为123的数据
db.col.remove({'title':'123'})
//删除所有数据
db.col.remove({})
数据查询
-
查询语法
//查询,query条件,projection返回的键/列
db.collection.find(query, projection)
//pretty,以格式化的方式来显示结果
db.col.find().pretty() -
操作符条件
操作 格式 范例 等于 {<key>:<value>}
db.col.find({"by":"123"}).pretty()
小于 {<key>:{$lt:<value>}}
db.col.find({"likes":{$lt:50}}).pretty()
小于或等于 {<key>:{$lte:<value>}}
db.col.find({"likes":{$lte:50}}).pretty()
大于 {<key>:{$gt:<value>}}
db.col.find({"likes":{$gt:50}}).pretty()
大于或等于 {<key>:{$gte:<value>}}
db.col.find({"likes":{$gte:50}}).pretty()
不等于 {<key>:{$ne:<value>}}
db.col.find({"likes":{$ne:50}}).pretty()
-
and、or
db.col.find({key1:value1, key2:value2}).pretty()
db.col.find({$or: [{key1: value1}, {key2:value2}]}).pretty() -
类型匹配
db.col.find({"title" : {$type : 2}})
类型 数字 类型 数字 Double 1 Regular Expression 11 String 2 JavaScript 13 Object 3 Symbol 14 Array 4 JavaScript (with scope) 15 Binary data 5 32-bit integer 16 Undefined(已废弃) 6 Timestamp 17 Object id 7 64-bit integer 18 Boolean 8 Min key(Query with -1) 255 Date 9 Max key 127 Null 10 - - -
Limit与Skip
//查询结果前2条
db.col.find({},{"title":1,_id:0}).limit(2)
//跳过查询结果1条
db.col.find({},{"title":1,_id:0}).skip(1)
//分页第2页,每页10条
db.col.find({},{"title":1,_id:0}).limit(10).skip(10) -
排序
//语法,1为升序,-1为降序
db.COLLECTION_NAME.find().sort({KEY:1})
//例
db.col.find({},{"title":1,_id:0}).sort({"likes":-1})
备份与恢复
-
备份
//-h:MongDB所在服务器地址;-d:需要备份的数据库实例;-o:备份的数据存放位置
mongodump -h dbhost -d dbname -o dbdirectory语法 描述 实例 mongodump –host HOST_NAME –port PORT_NUMBER 该命令将备份所有MongoDB数据 mongodump –host 10.0.3.1 –port 27017 mongodump –dbpath DB_PATH –out BACKUP_DIRECTORY - mongodump –dbpath /data/db/ –out /data/backup/ mongodump –collection COLLECTION –db DB_NAME 该命令将备份指定数据库的集合。 mongodump –collection mycol –db test -
恢复
//语法,--host <:port>, -h <:port>:服务器地址;--db , -d:数据库实例;
//--drop:删除备份后添加修改的数据;<path>:备份数据所在位置;
//--dir:指定备份目录,与<path>选其一
mongorestore -h <hostname><:port> -d dbname <path>