在Ubuntu的命令行中输入:sudo apt-get install mongodb
(一般等待安装,一会便安装成功)
检查是否安装成功:root@cqf-THTF-Chaoqiang-Server:/# mongo
注意:安装时出错,提示“有未满足的依赖关系”,本次解决方法是“重装系统”。
Linux下启动mongodb:
nohup /usr/bin/mongod -f /etc/mongod.conf &
nohup命令 mongo应用 –f mongo配置文件
service mongod start
(默认设置MongoDB是随Ubuntu启动自动启动的)
sudo service mongodb restart
use admin
db.shutdownServer({force : true})
service mongodb stop
导入、导出可以是.csv等格式文件。
【其与mongo.exe是同级的,因此不能进入Mongo后执行该命令】
-h 主机ip+端口号
-d 数据库名
-c 集合名
-f 字段名 (mongo中自动会有一个_id字段,相当于主键,因此不可以_id自己命名字段)
-type 文件类型
-file 文件所在目录
示例:备份mongodb数据库到与当前mongodump命令同一位置backup目录下:
示例:-d指定要恢复为的数据库,可以将备份的数据库恢复到与原来不同名的数据库中,这里为mongodb2,–drop表示在恢复前删除集合(若存在)。否则,数据就会与现有集合数据合并,可能会覆盖一些文档。
(1)显示所有的数据库:> show dbs;
(2)切换数据库:> use db_name;
(当db_name不存在时则会直接创建一个新的)
(3)显示当前数据库中所有的集合:> show collections;
或> show tables;
(4)查询操作:db.collection_name.find({条件})
db.paper_2005.find({'bjqw': /研究展望/}, {'bjqw':1})
db.paper_2005.find({'bjqw': /^<研究展望>/}, {'bjqw':1})
db.paper_2005.find({'title': {'$regex': '一分钟学会'}}, {'bjqw':1})
db.paper_2005.find({'jielun_fet.is_jielunduan': 1})
db.paper_2005.find({'user': {'$ne': 'fish'}}).count()
逻辑运算符:
"$lt" "<"
"$lte" "<="
"$gt" ">"
"$gte" ">="
"$ne" "!="
db.paper_2005.find({'user': {'$exists': true}})
db.paper_2005.find({'$where': 'this.Predict_tag_bayes != this.Predict_tag_SVM'})
db.collection.distinct(filed_name), 返回结果是list
db.paper_2005.distinct('filename')
db.paper_2005.find({
'nian': {
'$in': ['2010', '2011', '2012', '2013', '2014', '2015']})
(5)向指定数据库(my_mongo)的集合(my_collection)中插入数据:(之前需要切换到my_mongo):> db.my_collection.insert({'name':'cqf', 'age':12})
(6)更新操作:db.collection_name.update({键值对条件},{$set:{键值对}},upsert, multi)
(条件可以省略,只写{})
upsert : 如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : mongodb默认是false,只更新找到的第一条记录,如果为true,就把按条件查出来多条记录全部更新。
特别的,
①更新字段名:> db.getCollection('my_collection').update({}, {'$rename':{'age':'age_new'}}, false, true);
②删除字段名:> db.my_collection.update({}, {'$unset':{'age':''}}, false, true);
(7)删除操作(删除所有数据,{}中可以加入键-值对条件):db.collection_name.remove({})
官网下载.exe安装包文件(https://nosqlbooster.com/downloads),双击直接安装即可。
【注意,我的MongoDB服务是安装在Ubuntu系统上的】
安装完成后,我是SSH方式登录:
点击connect–>create,然后进入Basic标签页:其中Sever为MongoDB的配置文件( cat etc/mongod.conf )中net指定的ip、port(如下),Name是连接后显示的连名字。
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1
然后切换到SSH标签页:其中Address为MongoDB所在的机器真实ip,端口号为该机器SSH指定的端口号(需要确定SSH服务是启动的,且其端口已经被启用,在Ubuntu使用下面命令查看):
# 查看SSH服务是否为启动状态
sudo service ssh status
# 查看SSH使用的端口号
grep Port /etc/ssh/sshd_config
# 查看端口号启用情况,State为LISTEN表示正在监听,已启用
sudo netstat -plnt
1)SSH连接:
import pymongo
from sshtunnel import SSHTunnelForwarder
import atexit
realskip_ip='192.168.52.110'
# mongodb_ip、real_mongodb_port为mongodb配置文件中的bindIp和port(配置文件默认在/etc/mongod.conf)
mongodb_ip='127.0.0.1'
real_mongodb_port=27017
server = SSHTunnelForwarder((realskip_ip, 22),
ssh_password='xxx',
ssh_username='mmgg',
remote_bind_address=(mongodb_ip, real_mongodb_port)) #mongodb默认端口27017
server.start()
self.client = pymongo.MongoClient('127.0.0.1', server.local_bind_port)
self.db = self.client[db_name]
self.coll=self.db[collection_name]
def shutdown():
server.stop()
atexit.register(shutdown)
2)用户名、密码连接
# admin 账户 可以操作任意数据库
# 例如:用户名admin,密码admin*ccdd*kkyyxt,ip:192.fff.xxx.110,端口27017
client=pymongo.MongoClient('mongodb://admin:admin*cnkicnki*[email protected]:27017')
1、批量操作:bulk
1)
Bulk=db.collection.initialize_unordered_bulk_op() # 或 Bulk=db.collection.initialize_ordered_bulk_op()
# 然后进行相关操作定义,如:
Bulk.find() # [可加.update({“$set”:{键值对}}) / .remove()]
Bulk.insert()
# 最后统一执行操作:
Bulk.execute()
2)批量写入:db.coll_name.bulk_write( seq )
。注意seq格式是操作函数组成的列表
1)too many open files原因挂掉
解决:
增大系统的open file对应的ulimit参数
(所有操作包括mongo的启动都要在一个shell里进行,且该修改命令只对这个shell起作用)
安装
1、CentOS7.9安装
安装之前需要卸载系统自带的MariaDB:
rpm -qa|grep mariadb
yum remove mariadb-libs -y
(1)安装命令
注意:最后安装时可能出现错误:The GPG keys listed for the "MySQL 8.0 Community Server" repository are already installed but they are not correct for this package. Check that the correct key URLs are configured for this repository.
解决:最后一句命令添加参数 --nogpgcheck, 作用是 “禁掉GPG验证检查”
wget http://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
yum update
yum install mysql-community-server --nogpgcheck # 安装mysql
(2)启动mysql
CentOS7.9(同Ubuntu):
service mysqld start
window10
net start mysql80 # 关闭是:net stop mysql80
(3)进入mysql更改密码
grep 'temporary password' /var/log/mysqld.log # DOS中查看默认密码
mysql -u root -p # 使用该密码进入mysql
ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxx@2022'; # 更改(设置)密码
2、win10安装完成后,Navicat连接出现 2059
错误:
原因:在mysql8之前的版本中加密规则为mysql_native_password,而在mysql8以后的加密规则为caching_sha2_password。
解决:cmd进入mysql,并执行下述命令
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your password' PASSWORD EXPIRE NEVER; # 作废原密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your password'; # 修改加密规则并设置新密码
如下图:
常用引擎:
InnoDB 引擎:提供ACID事务支持,提供行级锁和外键约束等,在读写操作时不锁表,所以适合并发度较高的场景使用。
MyISAM 引擎:不提供ACID事务支持,执行写操作的时候会锁表,但会存储表行数,因此查询结果数量时不需要进行全表扫描。
基本说明:
1、数据类型
1)文本有4有类型:
TINYTEXT 256bytes
TEXT 64kb
MEDIUMTEXT 16Mb
LONGTEXT 4GB
2)时间类型
DATE # 仅年月日,格式:1000-01-01 (占三个字节)
DATETIME # 日期和时间,范围:1000-01-01 00:00:00' ~ '9999-12-31 23:59:59 (占8个字节)
TIMESTAMP # 日期和时间,和时区关联, 范围:'1970-01-01 00:00:01' ~ '2038-01-19 03:14:07'(占4个字节)
2、数据值型字段不能为空null:int、float、decimal(精确数值)
(1)导出库表结构和数据:mysqldump
(2)导入数据库脚本:source
①脚本中有创建库直接进mysql环境 :source filePath;
②没有创建库,进mysql环境然后:
create database databse_name;
use database database_name;
source filePath
报错1:ERROR 2005 (HY000): Unknown MySQL server host 'xxxx'
原因:可能是导出和导入的编码不一致,可以尝试导入编码utf8、gbk、gb2312等;也可能是mysql低版本导入到高版本所致。
解决:进入数据库使用命令: mysql -u root -p --default-character-set=utf8
报错2:Failed to open file 'xxx.sql', error: 2
解决:cmd中从.sql文件所在的路径进入mysql
进入目标数据库:use information_schema;
mysql8.0之后没有frm数据结构文件了,但使用 ibd2sdi 命令可以生成类似的TXT文件:
进入 ibd 文件所在的路径(Ubuntu默认:/var/lib/mysql/)
ibd2sdi --dump-file=解析后的文件名.txt 要解析的表名.ibd
TXT 文件中内容如下:
["ibd2sdi",
{
"type": 1,
"id": 379,
"object":
{
"mysqld_version_id": 80021,
"dd_version": 80021,
"sdi_version": 80019,
"dd_object_type": "Table",
"dd_object": {
"name": "reviews_2019",
"mysql_version_id": 80021,
"created": 20200925073618,
"last_altered": 20200925073618,
"hidden": 1,
"options": "avg_row_length=0;encrypt_type=N;key_block_size=0;keys_disabled=0;pack_record=1;stats_auto_recalc=0;stats_sample_pages=0;",
"columns": [
{
"name": "篇名",
"type": 27,
"is_nullable": false,
"is_zerofill": false,
"is_unsigned": false,
"is_auto_increment": false,
"is_virtual": false,
"hidden": 1,
"ordinal_position": 1,
"char_length": 65535,
"numeric_precision": 0,
"numeric_scale": 0,
"numeric_scale_null": true,
"datetime_precision": 0,
"datetime_precision_null": 1,
"has_no_default": true,
"default_value_null": false,
"srs_id_null": true,
"srs_id": 0,
"default_value": "AAAAAAAAAAAAAA==",
"default_value_utf8_null": true,
"default_value_utf8": "",
"default_option": "",
"update_option": "",
"comment": "",