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 mongodbError: No available formula with the name "mongodb"

MongoDB不同版本的开源协议 mongodb修改开源协议_数据库

直接报错,查了一下,我慌了…

原因:MongoDB不再是开源的了,并且已经从Homebrew中移除 #43770,但是mongodb-community是开放的

看来还是得上官网看教程,好吧以我目前的网络环境打开官网是不可能了,
可以参考github主页给了新的安装提示:https://github.com/mongodb/homebrew-brew,是我想多了,github能不能上也要看网络心情…

这个破网真是太耽误事了,本来几秒能搞定的,非要查一下别的解决办法,越差坑越多。。。lj

正确的安装

查到解决办法:

设定: brew tap mongodb/brew 安装: brew install mongodb-community(开始了龟速安装)

MongoDB不同版本的开源协议 mongodb修改开源协议_MongoDB不同版本的开源协议_02

启动:

方法一:
使用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的shell
mongo

这里我有个疑问,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 redashdb.dropDatabase();//这两句是删除这个数据库

3、建表和删表
建表collection
db.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

添加源

MongoDB不同版本的开源协议 mongodb修改开源协议_mongodb_03


官网贴出来了连接方法,但我试了一下怎么不好使呢,想google一下怎么连,结果败于网络…

啥网页都打不开了,效率急剧下降,填了名称、连接串mongodb://localhost:27017、数据库然后报错了->

MongoDB不同版本的开源协议 mongodb修改开源协议_MongoDB不同版本的开源协议_04


db_connection是个啥,google一下没结果,

找BUG

思来想去只能是源码里的东西了,果然在mongodb.py里找到了这个玩意儿

MongoDB不同版本的开源协议 mongodb修改开源协议_数据库_05


哈哈哈哈这个飘红的是什么玩意儿,自己改一下就好了。

我已经把这个问题提交给redash论坛了,看看官方的大佬怎么说。写于------2020.4.17------开始

官方已经在github上修改了这个错误,而且是在三天前,太贱了都没通知我一下哈哈哈哈哈哈

MongoDB不同版本的开源协议 mongodb修改开源协议_MongoDB不同版本的开源协议_06

写于------2020.4.17------结束

另外,添加源的时候要指定数据库。

QUERY

之后就可以愉快的查询了

mongodb是非关系型数据库,不像mysql,postgresql那些,
mongodb存的是与json结构一样的文档,表中的每一条记录都可以结构不同,
所以查询需要按照json的结构(又得学习了)

MongoDB不同版本的开源协议 mongodb修改开源协议_json_07


这里只是个简单的测试,日后再试试别的查询吧