需要提前下载mongo的tar包或者zip包。
不做解释,启动的时候需要配置数据库的存放地址和日志地址,同下。
cd /data/mongo # mongo安装的根目录
mkdir data # 创建mongo的data目录(存放目录)
mkdir logs # 创建mongo的日志存放目录
cd logs
touch logs # 创建mongo的日志地址,否则可能启不来,但是mongo启动的时候,自己却用了一个带日期的log文件
# 回到主目录,下载mongo二进制安装包
wget http://downloads.mongodb.org/linux/mongodb-linux-x86_64-amazon2-3.7.5.tgz
tar -zxvf mongodb-linux-x86_64-amazon2-3.7.5.tgz # 解压tar包
mv mongodb-linux-x86_64-amazon2-3.7.5 mongodb # 重命名解压的文件
创建快捷的启动方式:
1)、将启动参数放在启动脚本中进行启动
vim start-mongod.sh # 在mongo根目录中,创建mongod启动脚本,内容为:
/data/mongo/mongodb/bin/mongod -port 27017 --dbpath /data/mongo/data --logpath /data/mongo/logs/logs
2)、使用配置文件的方式
cd /data/mongo/mongodb/bin
vim mongo.conf # 在其中配置启动信息
port=27017 # 启动端口
dbpath=/data/mongo/data # 数据目录
logpath=/data/mongo/logs/logs.log # 日志目录
logappend=true # 日志追加,而不是覆盖
启动: ./mongod -f mongo.conf [ -- rest ] # 启动时开启rest API (3.2版本之后取消掉了该功能)
在插入文档之前会检查文档中是否存在_id(MongoDB的ObjectId类型),不存在则会进行默认添加,否则需要检查文档中传入的_id的合法性和唯一性。其他的更多检查需要应用程序本身进行维护。
db.test.insert({"name":"kevin", "age":NumberInt("18")}); # 在当前数据库的test集合中插入一个Document
或者 user = {"name":"kevin", "age":NumberInt("18")} 再 db.test.insert(user);
db.test.batchInsert([{"name":"kevin-01", "age":NumberInt("18")},{"name":"kevin-02", "age":NumberInt("18")}]);
批量插入的时候可能会在存在某一个文档报错的情况(比如_id检查唯一不通过),在应用程序的驱动中可以设置continueOnError属性,但是shell是不支持的。
db.test.remove({"name":"kevin-1"}); # 永久移除满足条件的文档,若没有条件,则会移除所有的文档
db.test.user.remove({"name":"kevin'}); 与 db.test.remove({"user.name":"kevin"}); 效果一致
db.test.drop(); # 不能有任何条件,将整个集合删除(1ms的时间内)
修改和查询是比较复杂的操作,后续将专门进行学习,下面是简单的修改:
db.test.update({"name":"kevin-1"} , {"name": "kevin"}); # 修改 前面条件为,后面为修改的属性和值
读取操作与其他数据库一样内容会比较,参见:Mongo的查询操作,下面是基本的查询:
db.test.find(); # 查询test集合中的文档(默认20条),可以在括号内带一个js的查询条件,如 db.test.find({"name":"kevin"});
db.test.findOne(); # 相当于满足条件的数据,然后limit 1