bingoogolapple / bingoogolapple.github.io

个人主页。同时也通过 Issues 记录学习笔记
http://www.bingoogolapple.cn
86 stars 19 forks source link

MongoDB学习笔记 #90

Open bingoogolapple opened 8 years ago

bingoogolapple commented 8 years ago

MAC下安装MongoDB

brew install mongodb

sudo mkdir -p /data/db

sudo chown -R 用户名 /data

使用默认参数启动

mongod 

指定数据目录和端口

mongod --dbpath=/data/db --port=27017

以守护进程方式启动

mongod  --fork --syslog

about to fork child process, waiting until server is ready for connections.
forked process: 60684
child process started successfully, parent exiting

// 指定日志文件
mongod  --fork --logpath=/data/mongod.log
// 查看日志文件
tail -f /data/mongod.log

结束守护进程方式1

// 查看是否存在mongod相关进程
ps -ef | grep mongo

// 向mongod进程发送SIGINT信号
kill -2 60684

// mongod发送SIGTERM信号
kill -4 60684
bingoogolapple commented 8 years ago

MongoDB客户端的使用

连接数据库

mongo
mongo 127.0.0.1:27017

查看数据库

show dbs

切换到指定数据库(切换数据库并不会创建数据库,只有在某个集合中插入数据才算创建了数据库和集合)

use 数据库名

创建集合users,并插入一条文档

> db.users.insert({"username":"user1"});
WriteResult({ "nInserted" : 1 })
> db.users.insert({"username":"user2","age":15});
WriteResult({ "nInserted" : 1 })

查看数据库的集合

> show collections
users

查看集合中所有的文档

> db.users.find();
{ "_id" : ObjectId("56b20f53cc524b54f9b81521"), "username" : "user1" }
{ "_id" : ObjectId("56b211a4cc524b54f9b81523"), "username" : "user2", "age" : 15 }

查看集合中文档的数量

> db.users.find().count()
2

根据条件查询

> db.users.find({"_id":ObjectId("56b20f53cc524b54f9b81521")})
{ "_id" : ObjectId("56b20f53cc524b54f9b81521"), "username" : "user1" }

更新文档

// 第一个参数是条件, 第二个是更新的内容,第三个是更新的配置

// 更新的是集合中第一个满足条件的那一行
> db.users.update({"username":"user2"},{$set:{"age":24}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

// 更新多行满足条件的
> db.users.update({"username":"user2"},{$set:{"age":30}},{multi:true})
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })

// 使用save方法修改时必须指定_id
> db.users.save({"_id":ObjectId("56b211cbcc524b54f9b81524"),"age":45})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

在save的时候必须把所有的值都指定,否则没有指定的值会被丢掉
{ "_id" : ObjectId("56b211cbcc524b54f9b81524"), "username" : "user2", "age" : 40 }
变成了
{ "_id" : ObjectId("56b211cbcc524b54f9b81524"), "age" : 45 }

删除文档

// 删除多行
> db.users.remove({"username":"user1"});
WriteResult({ "nRemoved" : 2 })

// 删除集合中第一个满足条件的那一行
> db.users.remove({"username":"user1"}, true);
WriteResult({ "nRemoved" : 1 })

// 删除集合中所有文档
> db.users.remove({})
WriteResult({ "nRemoved" : 6 })

// 删除集合中的文档和索引
> db.users.drop()
true

// 删除当前数据库
> db.dropDatabase()
{ "dropped" : "users", "ok" : 1 }

// 导入数据
mongoimport --db test --collection restaurants --drop --file primer-dataset.json
-db test  想往哪个数据库里面导入
--collection restaurants  想往哪个集合中导入
--drop 把集合清空
--file primer-dataset.json  哪个文件