mongodb入门学习:http://www.runoob.com/mongodb/nosql.html
一:下载
http://dl.mongodb.org/dl/win32/x86_64
二:解压到根目录下,文件夹名为mongodb,进入mongodb创建data和log文件夹,在log中创建mongodb.log文件(data存放数据,mongodb.log记录日志)。
三:构建mongod服务
运行cmd.exe (管理员身份)
进入到 e:\mongo\bin 目录下
输入 mongod --dbpath “E:\mongodb\data" --logpath " E:\mongodb\log\mongodb.log" --install --serviceName “mongodb“
启动mongodb:
:net start mongodb
进入mongodb:
:mongo
建立数据库:
use mydb
四:简单命令:
插入:
#往mydb库的mydb.user集合中插入一条记录(集合相当于表,记录相当于行(row))
db.mydb.user.insert({name:"zhangsan"}) <=> db.mydb.user.save({name:"zhangsan"})
注意:db.xxx.insert()中,集合就是xxx,如上例中集合就是mydb.user,不要认为是user,没有user这个集合,因为在mydb库中操作的,所以mydb.user集合就属于mydb库,专门提出来就是因为我之前理解错了,可以使用show tables命令查看当前库中的所有集合。
db.mydb.user.insert({_id:”s001”,name:”jack”,password:223}) #如果s001存在会报错,,save则不会
db.mydb.user.save({})
查询:
db.mydb.user.find() <=> db.mydb.user.find({})
db.mydb.user.findone()
db.mydb.user.find({{name:”admin”},{password:123}}) 第一个参数是查询的条件,,第二个参数是返回的字段
删除:
按条件:
db.mydb.user.remove({name:"zhangsan"})
删除mydb.user集合(相当于table):
db.mydb.user.drop()
删除mydb数据库(前提已进入要删除的库):
db.dropDatabase()
修改:
文档替换:update
例如:
符合{name:”test1”} 的记录修改为 {name:”test1”,age:20}
执行操作:
db.mydb.user.update({name:”test1”} , {name:”test1”,age:20})
疑问: 如果结构比较大(键值比较多),上述写法是不是显得非常不科学?
优化:
使用findOne()函数:
user=db.mydb.user.findOne({name:”test1”})
user.name=“test1”
user.age=20
db.mydb.user.update({name:”test1”},user)
但是{name:"test1"}有多条呢?
优化:增加条件精确匹配
{_id:”o34x…”,name:”test1”,age:30} 、{_id:”x876…”,name:”test1”,age:20}
如:年龄20的test1过生日
user=db.mydb.user.findOne({name:”test1”,age:20})
user.age++
db.mydb.user.update({_id:user._id},user)
修改器:$inc,,$set,,$unset
$inc:用来对已存在的键做增减,该键的值须为数字
db.mydb.user.update({name:"zhangsan"},{$inc:{age:1}}) #对name为张三的记录,把age键的值+1
$set:用来修改指定键值,键不存在会创建
db.mydb.user.update({name:"zhangsan"},{$set:{hobby:"swimming"}}) #对name为张三的记录,把hobby改为游泳
可以把键设置多个值
db.mydb.user.update({name:"zhangsan"},{$set:{hobby:["swimming","singing"]}}) #对name为张三的记录,把hobby改为游泳和唱歌
可以内嵌文档,使用 “.” 的方式
db.mydb.user.update({name:"zhangsan"},{$set:{"posture.height":"175cm"}} #对name为张三的记录,把posture中的height改为175cm ,记得用""包裹键
可以往posture中再增加一个age属性,这样就会有height和age两个了
db.mydb.user.update({name:"zhangsan"},{$set:{"posture.age":20}}
$unset:用来删除指定键,就是将键值设为1或-1或0
db.mydb.user.update({name:"zhangsan"},{$uset:{hobby:1}}) #对name为张三的记录,删除hobby键