MongoDB使用

2018/10/22 数据库

MongoDB使用帮助文档

项目需要用到NoSQL之MongoDB,学习备忘。

MacOS下安装

sudo brew install mongodb
# 安装后我的在
/usr/local/Celllar/mongodb/4.0.1/

# 启动
mongod --config /usr/local/etc/mongod.conf
mongo

help

db.help()                    help on db methods
db.mycoll.help()             help on collection methods
sh.help()                    sharding helpers
rs.help()                    replica set helpers
help admin                   administrative help
help connect                 connecting to a db help
help keys                    key shortcuts
help misc                    misc things to know
help mr                      mapreduce

show dbs                     show database names
show collections             show collections in current database
show users                   show users in current database
show profile                 show most recent system.profile entries with time >= 1ms
show logs                    show the accessible logger names
show log [name]              prints out the last segment of log in memory, 'global' is default
use <db_name>                set current database
db.foo.find()                list objects in collection foo
db.foo.find( { a : 1 } )     list objects in foo where a == 1
it                           result of the last line evaluated; use to further iterate
DBQuery.shellBatchSize = x   set default number of items to display on shell
exit                         quit the mongo shell

运行MongoDB

# 如果没有创建全局路径 PATH,需要进入以下目录,否则需要修改配置文件
sudo mkdir -p /data/db
cd 到默认目录bin目录下面
./mongod &
./mongo
# 如果遇到/data/db不可读的问题
sudo chmod -R go+w /data/db

数据库

命令 描述 范例
show dbs 显示所有数据库  
db 显示当前数据库对象或集合  
use 使用指定数据库 use test;
dropDatabase() 删除数据库 db.dropDatabase()
drop 清空数据库 db.collection.drop()

连接

mongodb://localhost
mongodb://admin:123456@localhost/
mongodb://admin:123456@localhost/test

创建集合

db.createCollection(name, options)
# 创建固定集合 mycol,整个集合空间大小 6142800 KB, 文档最大个数为 10000 个
db.createCollection("mycol", { capped : true, autoIndexId : true, size : 
   6142800, max : 10000 } 

查看集合

# test为collection名称
db.test.find()

常用操作

命令 描述 范例
Insert 插入文档 db.col.insert({ title: ‘MongoDB 教程’, description: ‘MongoDB 是一个 Nosql 数据库’, by: ‘菜鸟教程’, url: ‘http://www.runoob.com’, tags: [‘mongodb’, ‘database’, ‘NoSQL’], likes: 100 })
update 更新文档 db.col.update({‘title’:’MongoDB 教程’},{$set:{‘title’:’MongoDB’}},{multi:true})
remove 移除文档 db.col.remove({‘title’:’MongoDB 教程’})
find 查询文档 db.col.find().pretty() #简明方式查看

Command failed with error 18: ‘Authentication failed.’

最近遇到一个问题,如下,我在spring boot配置mongodb的配置信息,结果出现标题所示的错误。

spring:
    data:
      mongodb:
        host: 10.0.0.1
        port: 27017
        username: user
        password: password
        database: db_test
        authentication-database: db_test

查了很多文档,最终解决方案如下

首先登陆到mongo

./mongo 10.0.0.1:27017/admin -uuser -ppassword

然后

> use db_test
switched to db dashboarddb 

> db.createUser({
    user: "user",
    pwd: "password",
    roles: [
      { role: "readWrite", db: "db_test" }
    ]
  })

给user分配db_test的读写权限,再重启spring boot服务,发现可以连接mongodb了。

Search

    Table of Contents