一、连接数据库

  1. 输入cmd打开命令行
  2. 进入到mongodb安装目录
$ cd D:\workinstall\MongoDB\Server\4.2\bin
$ d:
  1. 打开mongodb
$ mongo

二、 数据库操作

show databases; #查看已有数据库
use dataName; #选择数据库,如果不存在库,则会自动创建。
db #查看当前数据库
show collections # 同上,
db.createCollection('表名');#建表
db.表名.drop(); #删除表

注:table在mongodb里叫collections

增加数据

#不指定文档的id,数据库会默认分配一个随机id
db.user.insert({name:'zhaos',age:23,sex:'f'});
#指定文档的id
db.user.insert({_id:5,name:'zhaos',age:23,sex:'f'});
#增加单个文档
db.user.insert({_id:6,name:'zhaos',age:23,sex:'f'});
#增加多个文档 
db.user.insert([{_id:2,name:'zhangs',age:21,sex:'m'},{_id:3,name:'wangw',age:22,sex:'m'},{_id:4,name:'zhaos',age:23,sex:'f'}]);

插入结果:

> db.user.find()
{ "_id" : ObjectId("5efaa84b1b10266d02bfab0f"), "name" : "zhaos", "age" : 23, "sex" : "f" }
{ "_id" : ObjectId("5efaa8541b10266d02bfab10"), "name" : "zhaos" }
{ "_id" : 5, "name" : "zhaos", "age" : 23, "sex" : "f" }
{ "_id" : 2, "name" : "zhangs", "age" : 21, "sex" : "m" }
{ "_id" : 3, "name" : "wangw", "age" : 22, "sex" : "m" }
{ "_id" : 4, "name" : "zhaos", "age" : 23, "sex" : "f" }

注意,这里解释下自动生成的id,MongoDB采用了一个ObjectId的类型来做主键,ObjectId是一个12字节的 BSON 类型字符串,按照字节顺序,依次代表:

4字节:UNIX时间戳 
    3字节:表示运行MongoDB的机器 
    2字节:表示生成此_id的进程 
    3字节:由一个随机数开始的计数器生成的值

删除数据

#将所有_id=7的文档删除
db.user.remove({_id:7})  
#将gender:'m'的所有文档删除
db.user.remove({gender:'m'})
#只删除一个gender:'m'的文档,num是指删除的文档数
db.user.remove({gender:'m',1})

修改数据

#从结果可以看出,这只是在替换一个文档,并非修改一个文档字段> db.user.update({name:'zhangs'},{name:'liul'})  WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.user.find();{ "_id" : 2, "name" : "liul" }
#修改一个文档的字段,必须使用$set:{属性:'值'}> db.user.update({name:'zhaos'},{$set:{name:'kongkong'}})WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.user.find();{ "_id" : 6, "name" : "kongkong", "age" : 23, "sex" : "f" }
修改时的赋值表达式	$set  修改某列的值	db.user.update({name:'zhaos'},{$set:{name:'kongkong'}})
$unset 删除某个列	
eg:db.user.update({name:'kongkong'},{$unset:{name:'kongkong'}})		
$rename 重命名某个列	
eg:db.user.update({_id:6},{$rename:{sex:'gender'}})	eg:db.user.update({},{$rename:{'sex':'gender'}},{multi:true})
$inc 增长某个列	
eg:db.user.update({_id:6},{$inc:{age:2}})		
$setOnInsert 当upsert为true时,并且发生了insert操作时,可以补充的字段.	
eg:db.user.update({_id:7},{$setOnInsert:{age:5,gender:'f'}},{upsert:true})

查找数据

#查询一个表中的所有文档    
db.user.find()

#查询特定属性的文档
db.user.find({_id:3})

#查询所有文档,显示gender列,不显示id
db.user.find({},{gender:1,_id:0})

#查询所有gender:'m'的文档,显示gender列,age列,不显示id
db.user.find({gender:'m'},{gender:1,_id:0,age:1})

高级查询知识点

#not equal 不等于
$ne ---> != 查询表达式
#查询age不等于25的文档
db.user.find({age:{$ne:25}})

#great than 大于
$gt ---> >
db.user.find({age:{$gt:20}})

#great than equal 大于等于
$gte ---> >=
db.user.find({age:{$gte:25}})

#less than 小于
$lt ---> <=
db.user.find({age:{$lt:25}})

#less than equal 小于等于
$lte ---> <=
db.user.find({age:{$lte:25}})


#$in --> in
#查询age为20和25的文档
db.user.find({age:{$in:[20,25]}})

#$nin --> not in
#查询age不为20和25的文档
db.user.find({age:{$nin:[20,25]}})


#$or
语法: {$or:[v1,v2..]}
是指取出 field列是一个数组,且至少包含 v1,v2值
db.user.find({$or:[{age:{$gte:30}},{name:"Zhaos"}]})


#$and
语法: {$and:[{<operator-expression>},{<operator-expression>}..]}
是指取出 field列是一个数组,且至少包含 v1,v2值
db.user.find({$and:[{age:{$lte:30}},{age:{$gte:5}}]})


#$not
语法:{field:{$not:{ <operator-expression> }}}
是指取出 field列是一个数组,且至少包含 v1,v2值
db.user.find({age:{$not:{$gt:25}}})

#$all
语法: {field:{$all:[v1,v2..]}}
是指取出 field列是一个数组,且至少包含 v1,v2值
db.user.find({age:{$all:[30]}})

$exists
语法: {field:{$exists:1}}
作用: 查询出含有field字段的文档
#查询含有age列的文档
db.user.find({age:{$exists:1}})

$mod
语法: {field:{$mod:[ divisor(除数), remainder(余数)]}}
作用: 查询出含有mod字段的文档
#查询含有age列的文档
db.user.find({_id:{$mod:[5,0]}})


$nor
{$nor,[条件1,条件2]}
是指所有条件都不满足的文档为真返回
#查询所有age不为30,gender不为f的文档
db.user.find({$nor:[{age:30},{gender:'f'}]})

正则表达式查询
#查询所有以name:yang开头的文档 /patern/
db.user.find({name:/yang*/})
#查询所有以name:zhao开头的文档,且不区分大小写 /patern/i
db.user.find({name:/zhao/i})

$where
#查询age>6,且age<22的文档
db.user.find({$where:"this.age>6" && "this.age<=22"})