安装:
-
安装:https://www.mongodb.com/docs/v4.4/tutorial/install-mongodb-enterprise-on-ubuntu/
-
修改配置文件:
vim /etc/mongod.conf
- 修改
bind-ip
为0.0.0.0
- 修改
dbPath
- 修改内存限制:
storage: wiredTiger: engineConfig: cacheSizeGB: 10
- 设置登录验证:
security: authorization: enabled
- 修改
-
设置用户密码:
- 进入命令行工具:
mongod
- 创建管理员用户
use admin db.createUser( { user:"root", pwd:"123456", roles:[{role:"root",db:"admin"}] } )
- 进入命令行工具:
启动
无法正常启动时尝试sudo
- service mongod start
- 或通过配置文件运行:
mongod -f /etc/mongod.conf --fork - 无法读取配置文件时:
mongod --dbpath /var/lib/mongodb --logpath /var/log/mongodb/mongod.log --bind_ip_all --fork --wiredTigerCacheSizeGB 20
重复主键批量数据插入测试:
import pymongo
import random
import time
from pymongo.errors import BulkWriteError
db = pymongo.MongoClient()
collection = db['test']['test']
data = []
for i in range(100000):
data.extend([{'_id': str(i)}] * random.randint(1, 2))
a = time.time()
print('original data counts:', len(data))
try:
collection.insert_many(data, ordered=False)
except BulkWriteError:
print('Batch op errors!')
finally:
print('time cost:', time.time() - a)
print('inserted data counts:', collection.count_documents({}))
测试结果:
original data counts: 149954
Batch op errors!
time cost: 2.9790291786193848
inserted data counts: 100000
Inserted_many中的ordered参数设为false即乱序插入,当前一条文档出现插入错误时不会影响其他文档的插入。
与mysql插入性能比较:
https://blog.youkuaiyun.com/chenhuajie123/article/details/9326777
Mongodb在指定主键的情况下插入性能下降极大,考虑以后所有数据先用ssdb去重,然后使用无主键插入。