MongoDB
3.0新特性
WiredTiger
MMAPv1
可插拔引擎API
基于web的可视化管理工具
查看版本号
mongod --version
启动数据库
mongod --dbpath $dbpath --logpath $logpath --logappend --fork --port=27000
$dbpath 数据目录
$logpath 是log文件的路径 不是目录路径
logappend 日志追加方式
--fork 后台运行
在win下
添加到系统服务中
mongod --dbpath $dbpath --logpath $logpath --logappend --install/remove --serviceName "MongoDb"
可以用 服务再启动
net start/stop MongoDB
mongod --dbpath ./data --logpath ./log/mongo.log --logappend --fork
操作
启动
mongod --dbpath /usr/local/mongodb/data --logpath /usr/local/mongodb/log/mon.log --logappend --fork --port=27000
默认端口 27017
连接
mongo 远程主机ip或DNS:MongoDB端口号/数据库名 -u user -p password
mongo 127.0.0.1:27000
mongo --port=27017
查询所有数据库
show databases
关闭
在一个已经连接上的客户端
use admin
db.shutdownServer()
根据配置文件来启动
建立mongodb.conf
#设置数据目录 dbpath=/usr/local/mongodb/data #设置日志文件位置 logpath=/usr/local/mongodb/log/mon.log #打开日志输出操作 logappend=true #不使用用户管理验证 noauth=true port=27017
指定配置文件来启动
mongod -f /usr/local/mongodb/mongodb.conf
-----------------------------------
基本操作
1.使用hk数据库
> use hk
switched to db hk
> show databases
admin 0.000GB
local 0.000GB
当没有实际的数据操作时,use 不会创建数据库
2.创建集合
db.createCollection("stu")
> db.createCollection("stu") { "ok" : 1 } > show databases admin 0.000GB hk 0.000GB local 0.000GB
这时hk数据库才会被真正创建
查看集合里所有的数据
db.stu.find()
3.插入数据
db.stu.insert({"name":'hk','age':10,'class':20});
> db.stu.find() > db.stu.insert({"name":'hk','age':10,'class':20}); WriteResult({ "nInserted" : 1 }) > db.stu.find() { "_id" : ObjectId("59295c842e2070afc7e34f3e"), "name" : "hk", "age" : 10, "class" : 20 }
查看集合
> show collections
stu
4.查看hk表数据
db.集合名称.find({若干条件})
插入不同结构的数据
var data={ "name":"张三", "sex":"男", "hobby":"足球", "english":89 }; db.stu.insert(data); > db.stu.find() { "_id" : ObjectId("59295c842e2070afc7e34f3e"), "name" : "hk", "age" : 10, "class" : 20 } { "_id" : ObjectId("59295e3e2e2070afc7e34f3f"), "name" : "张三", "sex" : "男", "hobby" : "足球", "english" : 89 }
mongodb每一条记录会生成_id
组成=时间戳+机器码+PID+计数器
5.查看单独的文档信息
> db.stu.findOne() { "_id" : ObjectId("59295c842e2070afc7e34f3e"), "name" : "hk", "age" : 10, "class" : 20 }
6.删除数据
db.stu.remove({"_id" : ObjectId("59295c842e2070afc7e34f3e")}); > db.stu.remove({"_id" : ObjectId("59295c842e2070afc7e34f3e")}); WriteResult({ "nRemoved" : 1 }) > db.stu.find() { "_id" : ObjectId("59295e3e2e2070afc7e34f3f"), "name" : "张三", "sex" : "男", "hobby" : "足球", "english" : 89 }
7.更新数据
var data={ "name":"张三", "sex":"女", "hobby":"跳舞", "english":99 }; db.stu.update({ "_id" : ObjectId("59295e3e2e2070afc7e34f3f")},data);
操作示例
> var data={ ... "name":"张三", ... "sex":"女", ... "hobby":"跳舞", ... "english":99 ... }; > db.stu.update({ "_id" : ObjectId("59295e3e2e2070afc7e34f3f")},data); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.stu.find() { "_id" : ObjectId("59295e3e2e2070afc7e34f3f"), "name" : "张三", "sex" : "女", "hobby" : "跳舞", "english" : 99 } 完全不同结构的文档更新 > var data={ ... "a":'ajax' ... } > db.stu.update({ "_id" : ObjectId("59295e3e2e2070afc7e34f3f")},data); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.stu.find() { "_id" : ObjectId("59295e3e2e2070afc7e34f3f"), "a" : "ajax" }
8.删除集合
db.stu.drop()
> db.stu.drop()
true
> show collections
9.删除数据库(删除删除当前所在的数据库,先切换再操作)
db.dropDatabase()