Mac搭建redash开发环境使用MongoDB源(四)
- MongoDB
- 安装
- 正确的安装
- 启动:
- MongoDB命令
- redash使用MongoDB
- 添加源
- 找BUG
- QUERY
MongoDB
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组
(留给自己看。
安装
不想让brew安装的时候updating可以conrtol+c
取消,然后就回到安装进程了
brew install mongodb
Error: No available formula with the name "mongodb"
直接报错,查了一下,我慌了…
原因:MongoDB不再是开源的了,并且已经从Homebrew中移除 #43770,但是mongodb-community是开放的
看来还是得上官网看教程,好吧以我目前的网络环境打开官网是不可能了,
可以参考github主页给了新的安装提示:https://github.com/mongodb/homebrew-brew,是我想多了,github能不能上也要看网络心情…
这个破网真是太耽误事了,本来几秒能搞定的,非要查一下别的解决办法,越差坑越多。。。lj
正确的安装
查到解决办法:
设定: brew tap mongodb/brew
安装: brew install mongodb-community
(开始了龟速安装)
启动:
方法一:
使用brew Starting the mongodb-community Server
启动brew services start mongodb-community
关闭brew services stop mongodb-community
方法二:
在用户根目录下使用如下命令open ~/.bash_profile
添加如下变量export PATH=/usr/local/Cellar/mongodb-community/4.2.5/bin:${PATH}}
因为我已经在.zshrc里添加过source .bash_profile,所以保存之后环境就生效了
在启动mongo之前,需要创建一个目录,为mongo默认的数据写入目录
注:默认目录为根目录下的data/db,目前mac系统已经不让在根目录下创建文件夹了,所以我们在user这一层创建
mkdir data/db
然后给刚刚创建的目录以可读可写的权限chown `id -u` /data/db
先启动MongoDB服务mongod --dbpath ~/data/db
再打开MongoDB的shellmongo
这里我有个疑问,mongod.conf文件里给出了dbpath,不能直接改了这个路径到/User/data/db么,我试了一下改了还是不能用mongod直接运行,这样的话岂不是在/User/data/db和/usr/local/var/mongodb有两套data了么。用brew services start mongodb-community启动就是进入了/usr/local/var/mongodb,不对我好像明白了,既然我是用brew安装的就应该用人家已经建好的data啊…先就这样吧
关闭use admin;
db.shutdownServer();
MongoDB命令
1、查询库、查询表show dbs
//查询所有的数据库how collections
//查询当前数据库下的所有数据表
2、建库和删库use redash
//建立一个名为redash的数据库,当这个库存在时则是切换到这个数据库中去use redash
db.dropDatabase();
//这两句是删除这个数据库
3、建表和删表
建表collectiondb.createCollection('test');
查看show collections;
db.test.insert({id:1,name:'aaa'},{id:3,name:'c'});
//可以直接插入数据,不需要先建表db.test.drop();
//删除myTable这个数据表
4、单表的增删改db.test.insert({id:1,name:'bb'});
//新增db.test.update({name:'bb'},{$set:{id:2}});
//修改db.test.remove({name:’bbb'});
//删除
5、查询db.test.find();
//查询myTable中的所有数据db.test.find().sort({id:1});
//根据age升续db.test.find().count();
//查询db.test.find({"id":1});
//查询单一条件
6、创建用户db.createUser({user:"root",pwd:"123456",roles:[{role:"root",db:"admin"}]})
//创建超级用户show users
//查看当前库下的账户db.dropUser(“admin”)
//删除用户db.auth("admin","123456")
//重启具有认证的mongodb数据库后登陆mongo 127.0.0.1:27017/admin --username root --password 123456
//重新登录
redash使用MongoDB
添加源
官网贴出来了连接方法,但我试了一下怎么不好使呢,想google一下怎么连,结果败于网络…
啥网页都打不开了,效率急剧下降,填了名称、连接串mongodb://localhost:27017
、数据库然后报错了->
db_connection是个啥,google一下没结果,
找BUG
思来想去只能是源码里的东西了,果然在mongodb.py里找到了这个玩意儿
哈哈哈哈这个飘红的是什么玩意儿,自己改一下就好了。
我已经把这个问题提交给redash论坛了,看看官方的大佬怎么说。写于------2020.4.17------开始
官方已经在github上修改了这个错误,而且是在三天前,太贱了都没通知我一下哈哈哈哈哈哈
写于------2020.4.17------结束
另外,添加源的时候要指定数据库。
QUERY
之后就可以愉快的查询了
mongodb是非关系型数据库,不像mysql,postgresql那些,
mongodb存的是与json结构一样的文档,表中的每一条记录都可以结构不同,
所以查询需要按照json的结构(又得学习了)
这里只是个简单的测试,日后再试试别的查询吧