配置
- 目录
/usr/local/Cellar/mongodb/3.6.3
- To have launchd start mongodb now and restart at login:
brew services start mongodb
- Don't want/need a background service you can just run :
mongod --config /usr/local/etc/mongod.conf
- 配置文件
/usr/local/Cellar/mongodb/3.6.3/bin/mongodb.conf
//内容
port=27017
dbpath=/usr/local/Cellar/mongodb/3.6.3/data/
logpath=/usr/local/Cellar/mongodb/3.6.3/log/mongodb.log
fork = true
- 启动(在bin路径下执行)
./mongod -f mongodb.conf
//运行成功打印如下信息:
about to fork child process, waiting until server is ready for connections.
forked process: 779
child process started successfully, parent exiting
- 在bin目录下进入MongoDB控制台
./mongo
//退出
exit
//或者
Ctrl+C
//注意:退出的是MongoDB控制台,./mongo线程关闭
- 关闭MongoDB服务
> use admin
> db.shutdownServer()
//注意:关闭MongoDB服务,././mongod -f mongodb.conf线程关闭
> use admin
switched to db admin
> db.shutdownServer()
server should be down...
2018-08-02T09:26:55.235+0800 I NETWORK [thread1] trying reconnect to 127.0.0.1:27017 (127.0.0.1) failed
2018-08-02T09:26:55.235+0800 W NETWORK [thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: Connection refused
2018-08-02T09:26:55.235+0800 I NETWORK [thread1] reconnect 127.0.0.1:27017 (127.0.0.1) failed failed
可能需要用到的操作
- 查看关于mongo的线程
ps -ef | grep mongo
//查询结果示例
lujiafengdeMBP:~ lujiafeng$ ps -ef | grep mongo
501 2575 1 0 5:04下午 ?? 0:01.51 ./mongod -f mongodb.conf
501 2583 1247 0 5:05下午 ttys000 0:00.11 ./mongo
501 2585 2463 0 5:05下午 ttys001 0:00.00 grep mongo
- 杀死线程
kill 2575
基本操作(以下操作在MongoDB控制台中输入)
MongoDB的默认数据库为db
,该数据存储在data
目录中。
- 显示所有数据的列表
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.000GB
- 显示当前数据库对象或集合
> db
test
- 连接到一个指定的数据库
> use local
switched to db local
> db
local
- 创建数据库
//如果数据库不存在,则创建数据库,否则切换到指定数据库
use DATABASE_NAME;
- 删除数据库
//删除当前数据库
db.dropDatabase()
- 创建集合
db.createCollection(name, options)
//name为要创建的集合名称
//options为可选参数,指定有关内存大小及索引的选项
//示例
> db.createCollection("user")
{ "ok" : 1 }
> show tables
user
在MongoDB中,在你插入一些文档时,MongoDB会自动创建集合。
> db.book.insert({"name":"one day"})
WriteResult({ "nInserted" : 1 })
> show collections
book
user
>
- 查看已有集合
show collections
- 删除集合
db.collection.drop()
//删除成功,返回true,否则返回false
//示例:删除user集合
> show tables
user
> db.user.drop()
true
> show tables
>
- 插入文档
db.COLLECTION_NAME.insert(document)
//document可以为一个变量
//3.2版本后新增插入语法
db.COLLECTION_NAME.insertOne({"a":3}) //向指定集合插入一条数据
db.COLLECTION_NAME.insertMany([{"b":2}, {'c':3}]) //向指定集合插入多条数据
- 查看已插入的文档
db.COLLECTION_NAME.find()
//易读的方式读取数据,pretty()方法以格式化方式来显示所有文档
db.COLLECTION_NAME.find().pretty()
- 更新文档
update()
> db.book.update({"a":3},{$set:{"a":1}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
>
以上语句只会修改第一条发现的文档,如果你要修改多条相同的文档,则需要设置 multi 参数为 true。
db.book.update({"a":3},{$set:{"a":1}},{multi:true})
save():通过传入的文档来替换已有的文档
db.COLLECTION_NAME.save(document)
- 删除文档
db.COLLECTION_NAME.remove(
<query>, //(可选)删除文档的条件
{
justOne: <boolean>, //(可选),true或1,则只删除一个文档
writeConcern: <document>//(可选)抛出异常的级别
}
)
//示例
> db.book.remove({"a":1})
WriteResult({ "nRemoved" : 1 })
>
//输出所有数据
> db.book.remove({})
网友评论