mongoDB 常用的操作命令
- 查看当前数据库的版本号:db.version()
- 查看当前所在的数据库:db 默认是test数据库
- 查看当前数据库连接的地址:db.getMongo()
- 查看所有数据库:show databases / show dbs
注:数据库如果没有数据,不会显示 - 切换数据库:use 数据库名
注:如果没有这个数据库,会先创建再切入 — 数据库的隐式创建
增:
- 创建集合:db.createCollection(集合名)
- 查看集合:show collections / show tables
- 插入文档:
db.集合名.insert({‘k’:‘v’})
db.集合名.save({‘k’:‘v’})
注1:如果想要插入多条数据,可以将多个对象放到一个数组中
db.集合名.insert([{},{},{}])
注2:如果插入数据的集合不存在,会先创建再插入 — 集合的隐式创建 - 查询数据:db.集合名.find()
10.查询当前数据库的状态:db.stats()
11.拷贝数据,将一个数据库中的数据拷贝到另一个数据库中
db.copyDatabase(‘数据库1’,‘数据库2’,‘地址’)
删:
12.删除集合:db.集合名.drop()
13.删除当前所在的数据库:db.dropDatabase()
14.删除文档:remove(query[,justOne])
query: 必选项
justOne:可选参数,代表是否只删除一条数据,是一个布尔值。默认false
db.集合名.remove({}) 删除全部文档
db.集合名.remove(query) 根据条件删除,删除全部符合条件的数据
db.集合名.remove(query,true/false) 是否只删除一条数据
改:
15.更新数据/修改数据:db.集合名.update(query,update[,upsert,multi])
query:条件 (小于:gt,等于:
ne,大于等于:
lte)
update:更新后的数据,新数据
$set: 设置值 $inc:增长值 $rename:重命名 $unset:删除
upsert:可选参数,是一个布尔值。作用:如果不存在update记录,是否插入更新的数据?
true:代表插入,false:代表不插入 默认是false
multi:可选参数,是一个布尔值。作用:是否将查询出来的所有符合条件的数据,全部更新?
true:全部更新 false:更新第一条 默认是false
查:
16.查询文档:find([query,是否显示此字段])
db.集合名.find() 查询所有文档
db.集合名.find(query) 查询所有符合条件的文档
db.集合名.find(query,{k:1(显示)/0(不显示)})
注:find()方法查询时,查询出来的数据是一行显示的,可以使用pretty()将数据格式化输出
db.集合名.findOne([query,是否显示此字段]) 只查询一条数据,返回的数据格式是格式化之后的形式,所以,此方法不能使用pretty()
17.查询某一列去重后的数据
MySQL:select distinct 字段 from 表
MongoDB:db.集合名.distinct(k)
18.MongoDB中AND条件的使用:多个条件以逗号分隔
MySQL:select * from xxx where xxx=xxx and xxx=xxx
MongoDB:db.集合名.find({‘k1’:‘v1’,‘k2’:v2,……})
19.MongoDB中OR条件的使用:KaTeX parse error: Expected '}', got 'EOF' at end of input: …:db.集合名.find({'or’:[{k1:v1},{k2:v2},……]})
20.MongoDB中的限制查询:
MySQL:select * from xxx limit 2
MongoDB:db.集合名.find().limit(n) 查询前n条数据
21.MongoDB中的skip()
MySQL:select * from xxx limit 2,3
MongoDB:db.集合名.find().skip(n) 跳过前n条数据,从n+1条开始查询
22.MongoDB中的分页:
db.集合名.find().skip(n).limit(m) 跳过前n条数据,从n+1条开始查询,查询m条数据
23.MongoDB中的模糊查询:
MySQL:select * from 表 where name like %xxx%
MongoDB:db.集合名.find(‘k’:/xxxx/)
24.MongoDB中的排序:sort()
db.集合名.find().sort({‘k’:1(正序,从小到大)/-1(倒叙,从大到小)})
25.MongoDB中的统计:
MySQL:select count(*) from xxx
MongoDB:db.集合名.find().count()
游标:
26.MongoDB中的游标:
插入1000条数据:
for(var i=1;i<=1000;i++){
db.集合名.insert({k:v,……})
}
- 什么是游标?
MongoDB中的游标和MySQL中的游标非常相似,可以通过对游标进行一系列的设置来控制游标查询数据,游标并不是查询的结果,而是查询的一个返回资源或者接口,通过这个接口可以逐条读取数据,和Python中的生成器类似,游标会消耗内存资源,所以,在游标使用之后,应该尽快释放掉,在MongoDB中,如果游标被定义之后,没有使用变量接收,那么就是一个查询结果,默认自动迭代20次,可以使用
DBQuery.shellBatchSize=n n是一个数字,即一次显示的数据量
2.游标的使用
2.1 声明游标:var cursor=db.集合名.find()
2.2 next():可以移动游标,取出文档
2.3 print(cursor.next()) 返回一个[Object Bson],是Json的二进制类型
2.4 hasNext() 查看游标是否能够继续移动,返回值是布尔值,true代表能够继续移动,false代表不能继续移动
2.5 while(cursor.hasNext()){
printjson(cursor.next())
}
2.6 使用forEach()方法进行迭代 cursor.forEach(函数)
var cursor=db.集合名.find()
var getContent=function(obj){
printjson(obj.content)
}
cursor.forEach(getContent)
2.7 游标的声明周期:
游标迭代到最后一条数据时,自动关闭