基础命令(建库建表):
查看当前的数据库:
show dbs
选择库:
use databaseName
查看当前库下的表(collection):
show tables/collections
建库(Mongodb的库是隐式创建,可以use一个不存在的库。然后在该库下创建collection,即可完成建库):
①创建collection
db.createCollection(‘collectionName’)
②隐式创建collection(直接向不存在的collection中插入数据)
db.collectionName.insert(document);
③删除collection
db.collectionName.drop()
④删除database
db.dropDatabase();
基础命令(CURD):
insert:
db.collectionName.insert(document);
delete:
db.collectionName.remove(查询表达式, 选项);
db.stu.remove({gender:’m’,true}); 删除stu表中gender属性为m的文档,只删除1行。
①查询表达式依然是个json对象
②查询表达式匹配的行,将被删掉.
③如果不写查询表达式,collections中的所有文档将被删掉.
④选项指是否只删一行, 默认为false
update:
db.collection.update(查询表达式,新值,选项);
db.news.update({name:'QQ'},{name:'MSN'}); 选中news表中,name值为QQ的文档,并把其文档值改为{name:’MSN’},
注意:这里新文档直接替换了旧文档,而不是修改。文档中的其他列也不见了,改后只有_id和name列了。如果是想修改文档的某列,可以用$set关键字
db.collectionName.update({name:'QQ'},{$set:{name:’MSN’}})
$set修改某列的值
$unset删除某个列
$rename重命名某个列
$inc增长某个列
upsert和mult参数:{upsert:true/false , multi:true/false}
db.stu.update({name:'wuyong'},{$set:{name:'junshiwuyong'}},{upsert:true}); 如果有name=’wuyong’的文档,将被修改。如果没有,将添加此新文档
db.news.update({age:21},{$set:{age:22}},{multi:true}); multi:是指修改多行,把news中所有age=21的文档,都修改
find:
db.collections.find(查询表达式,{列一:1,列二:1});
①db.stu.find() 查询所有文档所有内容
②db.stu.find({},{gendre:1}) 查询所有文档,的gender属性 (_id属性默认总是查出来)
③db.stu.find({},{gender:1, _id:0}) 查询所有文档的gender属性,且不查询_id属性
④db.stu.find({gender:’male’},{name:1,_id:0}); 查询所有gender属性值为male的文档中的name属性
查询表达式:
1:最简单的查询表达式
{filed:value} 是指查询field列的值为value的文档
2: $ne --> !=
{field:{$ne:value}} 是指查filed列的值 不等于value的文档
3: $nin --> not in
4: $all
{field:{$all:[v1,v2..]}} 是指取出field列是一个数组,且至少包含 v1,v2值
5: $exists
{field:{$exists:1}} 查询出含有field字段的文档
6: $nor,
{$nor,[条件1,条件2]} 是指所有条件都不满足的文档为真返回
7:用正则表达式查询 以”诺基亚”开头的商品
例:db.goods.find({goods_name:/诺基亚.*/},{goods_name:1});
8:用$where表达式来查询
例:db.goods.find({$where:'this.cat_id != 3 && this.cat_id != 11'});
注意:用$where查询时, mongodb是把bson结构的二进制数据转换为json结构的对象,然后比较对象的属性是否满足表达式。速度较慢