-
库操作
-
帮助
- help
-
查看库
- show dbs/ show databases;
-
切换库/创建库
- use database_name
- 存在则切换,不存在则创建
-
查看当前使用的库
- db或db.getName()
-
删除数据库:
-
先切换到库下,再执行db.dropDatabase()
-
-
系统库
- admin
- 存放用户和相关权限信息
- 特定的管理操作必须切到该库执行,如: 列出所有数据库,或者关闭服务
- local:
- 永远不会被复制,可以用来存储限于本地单台服务器的任意集合
- config:
- 当Mongo用于分片设置时, config数据库还在内部使用,用于保存分片的相关信息
- admin
-
-
集合操作(表)
-
帮助:
- db.worker.help()
-
查看当前库下有哪些集合:
-
show collections
-
-
创建集合:
- 显示创建:db.createCollection("collection_name")
- 隐式创建:直接创建文档,会自动创建集合
-
删除集合:
-
db.集合名.drop()
- > db.wang.drop()
-
-
查看集合中有多少条
-
document: db.collection_name.count()
-
-
删除当前数据库中的所有集合:
-
db.collection_name.drop()
-
-
-
文档操作(记录,row)
-
插入文档:
- 单个文档的插入:db.collection_name.insert(document),插入文档后会自动生成一个_id号;
- db.collection_name.save(document)
- 批量插入:db.collection_name.insert([document1,document2])
- 单个文档的插入:db.collection_name.insert(document),插入文档后会自动生成一个_id号;
-
查询
- 集合中的所有文档:
- db.collection_name.find()
- 查询特定文档:
- db.comment.find({"articleid":"102"})
- 结果集中只返回1条: db.comment.findOne()
- 投影查询(显示部分字段)
- 显示要查的字段:db.comment.find({"articleid":"102"},{articleid:1,content:1})
- 不显示对应的字段:db.comment.find({"articleid":"102"},{articleid:0,content:0})
- 集合中的所有文档:
-
更新
- db.collection_name.update(query,update,options)
- 语法:db.collection_name.update(<query>,<update>,{upsert:<boolean>,multi:<boolean>,writeConcern:<document>})
- query: update的查询条件,类似sql update后的where
- update: update的对象和一些更新操作符,$set(直接更新),$inc(累加更新)...
- multi: 可选,默认false只更新找到的第一条,如果为true则更新查找的所有结果集;
- save方法插入或者更新文档(_id存在就更新,不存在就插入)
-
覆盖修改
- 目标field直接覆盖全部所有的field
- db.hero.update({"_id":ObjectId("6391b18a32de2b7275d30a1b")},{"age":"37"})
-
局部修改,只修改特定的field
- db.hero.update({"name":"caocao"},{$set:{age:28}})
-
批量修改
- 对所有过滤出的age:37的结果进行修改: db.hero.update({"age":"37"},{$set:{age:47}},{multi:true})
-
列值增长修改
- 给集合中所有47岁的,age+=1 : db.hero.update({"age":47},{$inc:{age:1}})
-
删除
-
db.collection_name.remove(条件)
- db.hero.remove({"name":"nanluo"})
- 操作将删除所有过滤出的结果集
-
删除集合中的所有数据(同truncate)
- db.collection_name.remove({})
-
以id为条件删除
- db.hero.remove({_id:ObjectId("6391b4f132de2b7275d30a21")})
-
-
统计
-
count
- 查看集合中的文档数db.collection_name.count()
- 查看age为21的文档数:db.hero.count({"age":"21"})
-
limit/skip分页
- 查询前2条: db.hero.find().limit(2)
- db.hero.find({"age":"21"}).limit(2)
- 跳过第一页,查第二页:db.hero.find({"age":"21"}).limit(5).skip(10)
- 查询前2条: db.hero.find().limit(2)
-
sort
- 查询结果升序:db.hero.find().sort({age:1})
- 查询结果降序:db.hero.find().sort({age:-1})
- 多个条件排序:db.hero.find().sort({age:1,name:-1})
- 注意:skip(), limit(),sort()同时出现的时候,执行顺序是先sort()然后skip(),最后limit(), 和命令写的顺序无关;
-
正则的复杂条件查询
- db.collection_name.find({field:/正则表达式/})
- db.hero.find({"name":/^z/})
- db.hero.find({"name":/g$/})
-
比较查询
- db.collection_name.find({"field":{$gt:value}})
- 比较符号: $gt, $lt, $gte, $lte, $ne
- eg: db.hero.find({"age":{$gt:"21"}})
-
包含查询
- db.collection_name.find({field:{$in:["xx","yy"]}})
- 查询age在19和20的文档: db.hero.find({"age":{$in:["19","20"]}})
-
条件查询and/or
- $and:[{},{},{}]
- $or:[{},{},{}]
- name=mao 并且age=19的文档: db.hero.find({$and:[{"age":"19"},{"name":"mao"}]})
- name=mao 或者age= 21的文档: db.hero.find({$or:[{"age":"21"},{"name":"mao"}]})
-
-
MongoDB日常操作
最新推荐文章于 2024-09-03 21:07:21 发布