MongoDB操作指令
程序员文章站
2022-05-08 11:29:02
...
一、入门指令
1、查看数据库
show dbs 查看当前有哪些的数据库
use databaseName 进入数据库
show tables/collections 查看当前库下的collection
2、创建数据库
MongoDB 的库是隐式创建,你可以 use 一个不存在的库
然后在该库下创建collection,即可创建库
3、创建collection(也就是表)
db.createCollection('collectionName')
备注:
collection 允许隐式创建,即 db.collectionName.insert(document);
4、删除collection
db.collectionName.drop() ,
5、删除database
db.dropDatabase();
6、查看帮助信息
db.help();
二、基本操作增删改查
1、增:insert
介绍: mongodb存储的是文档,. 文档是json格式的对象
语法: db.collectionName.isnert(document);
①增加单篇文档
db.collectionName.insert({name:'jack'});
②增加单个文档,并指定_id
db.collectionName.insert({_id:1,name:'eric'});
③增加多个文档
db.collectionName.insert([
{_id:2,name:'dora'},
{name:'tony'},
{_id:3,name:'lili',gender:'female',hobby:['Internet','music','swimming']}
]);
2、删:remove
语法: db.collection.remove(查询表达式, 选项);
选项是指 {justOne:true/false},是否只删一行, 默认为false,指删除所有
备注:
a.查询表达式依然是个json对象
b.查询表达式匹配的行,将被删掉
c.如果不写查询表达式,collections中的所有文档将被删掉
①删除test表中 id属性值为 1 的文档
db.test.remove({_id:1});
②删除test表中name属性为tony的文档,只删除1行
db.test.remove({name:'tony'},true);
3、改:update
语法: db.collection.update(查询表达式,新值,选项);
例:
db.test.update({name:'lili'},{name:'alex'});
是指选中test表中,name值为lili的文档,并把其文档值改为{name:'alex'},
结果: 文档中的其他列也不见了,改后只有_id和name列了。
即,新文档直接替换了旧文档,而不是修改
如果是想修改文档的某列,可以用$set关键字
db.collectionName.update(query,{$set:{name:'alex'}})
修改时的赋值表达式
$set 修改某列的值 {$set:{列名:新值}}
$unset 删除某个列 {$unset:{列名:1}}
$rename 重命名某个列 {$rename:{旧列名:新列名}}
$inc 增长某个列 {$inc:{列名:增加的值}}
$setOnInsert 当upsert为true时,并且发生了insert操作时,可以补充的字段
Option的作用:
{upsert:true/false,multi:true/false}
multi:是指修改多行(即使查询表达式命中多行,默认也只改1行,如果想改多行,可以用此选项)
Upsert:是指没有匹配的行,则直接插入该行(和mysql中的replace一样)
①把news中所有age=21的文档,都修改
db.test.update({age:21},{$set:{age:22}},{multi:true});
②如果有name='eric'的文档,将被修改;如果没有,将添加此新文档
db.test.update({name:'eric'},{$set:{name:'hehe'}},{upsert:true});
4、查: find, findOne
语法: db.collectionName.find(查询表达式,查询的列);
db.collections.find(表达式,{列1:1,列2:1,...});
①查询所有文档 所有内容
db.collectionName.find()
②查询所有文档的name属性 (_id属性默认总是查出来)
db.collectionName.find({},{name:1})
③查询所有文档的gender属性,且不查询_id属性
db.collectionName.find({},{name:1, _id:0})
④查询所有gender属性值为male的文档中的name属性
db.collectionName.find({gender:'male'},{name:1,_id:0});