一.常用api
1. use [database_name] :创建或者切换数据库,如果没有该数据库则在创建的数据库下面创建,可以创建一个空集合也可以,db.createCollection('user')
一个集合的时候自动生成一个数据库。
2. show dbs: 查看数据库列表
3. db: 查看当前使用的数据库名
4. db.dropDatabase(): 删除当前正在使用的数据库
5. exit: 退出和断开数据库连接
6. db.[database_name].help(): 查看当前数据库下面的所有的操作数据的方法
二. 集合的操作(表:collections)
1. show collections : 查看当前数据库下面的所有集合(表)
2. db.createCollection(collection_Name):在当前数据库下面创建一个空集合
3. db.[collection_name].insert(document(json文档)) : 在当前数据库下面创建一个自
定义的集合(如果这个集合不存在)并且同时插入数据,支持单个对象或者是一个数组包含的对象.
4. db.[collection_name].find(query, key): 为空则查询该数据库下面选取的集合的所有的json文档;
- query 查询条件,可以使普通对象,也可以是使用操作符,比如$gt(大于),$gte(大于或等于),
$lt(小于),$lte(小于或等于),$ne(不等于),栗子:
db.school.find({age:{$gt:30}})查询当前集合所有age属性大于30的文档;
当查询_id时,需要添加ObjectId(),栗子:
db.school.find({_id:ObjectId('填入ID')}),这样才能匹配到相应的id文档;
db.school.find({name:'qiansimin'}).count(),表示得到匹配到的文档的个数;
find()还支持正则,栗子:
db.school.find({name:/qiansimin\d+/}),就会匹配到所有qiansimin+数字的文档
查询条件操作:
and: {name:'qiansimin',age:14} 不解释
or: db.school.find({$or: [{name:'qiansimin',age:14]}),查询该集合中 name为qiansimin或者age为14的文档;
limit和skip方法
limit(): db.school.find({name:'qiansimin'}).limit(3),查询name为qiansimin的前三条文档数据;
skip(): db.school.find().skip(3),跳过该集合的前三条数据;
sort排序方法:
db.school.find().sort({age:1}),把该集合按照age字段升序排列,-1的话 就倒叙排列
- key: {key:1,name:0},例如{name:1,age:1}表示把匹配到的文档只显示name和age字段,其他的
不显示
5. db.[collection_name].count(): 查看当前数据库下面某个集合下面的所有文档的数量
6. db.[collection_name].drop(): 删除当前数据库中的某个集合(表)
7. db.[collection_name].save({}): 保存某个文档(当前集合不存在该_id的文档就保存,
如果已经存在相同_id那么就更新数据,db.[collection_name].insert({})无法做到相同_id
的保存)
8. db.[collection_name].update(query, update, upsert(可选), multi(可选), writeConcern(
可选)):
- query(json形式): 查询的值,比如写{age:14},那就查到所有的为14的文档,写个空{}就表示查询所有的文档
- update(json形式): 更新后的值,使用$set和$inc来操作,$set直接更新,$inc在原文档基础上
累加更新,比如{$set:{name:'qiansimin'}}就将文档中的age为14的文档的name字段更新为
qiansimin,再比如{$inc:{age:2}}就把匹配到的所有的文档的age属性在原来的值上加2,如果只填写一个json类型的数据,那么直接覆盖更新成update过后的值
- upsert(json形式): 默认为false,更新的的字段如果查询到的这个文档没有该字段的话是否重新插入,false时找不到就算了,true找不到那么就插入一个
- multi(json形式): 是否只更新查询出来的第一条数据,默认为false, true的话就更新所有查询出来的
文档
栗子:db.school.update({age:15},{$inc:{age:5}},{multi:true}),在school的集合
中找到所有的age等于15的文档然后把他们的age属性都加5
9. db.[colletion_name].remove(query, justone): 空的话就表示把这个集合给删空,
- query(json形式): 查询条件
- justone(json形式): 设为true或1, 那么只删除匹配到的第一个文档,默认为false, {justone: true}
10. db.[collection_name].findeOne(): 查询集合下的第一条数据