irpas技术客

mongodb入门笔记_ASKED_2019

irpas 3871

下载:

docker pull mongo:latest

运行:

docker run –-name mongodb -p 27017:27017 -v /data/mongo:/data/db -d mongo –auth

–name:设置容器名称 -p 端口映射,使外部通过主机ip:27017访问mongodb服务 -v 容器挂载目录,本机的/data/mongo挂载到/data/db中,作为mongodb存储目录 -d 设置容器以守护进程方式运行,docker在后台运行,不会直接把执行命令的结果输出在当前宿主主机下。 – auth 需要密码才能访问容器服务 然后进入docker:

docker exec -it mongodb /bin/bash

以admin的身份进入mongodb:

mongo admin

(也可以直接进入docker -it mongodb mongo admin) 进入以后配置用户信息:

db.createUser({user:'admin',pwd:'123456',roles:[ {role:'userAdminAnyDatabase',db:'admin'},"readWriteAnyDatabase"]});

显示: 则成功了。 使用账户进行认证:db.auth(“admin”,”123456”)

基本操作: 创建数据库use database_new, 这里需要注意的是user和db是绑定的,当前创建的用户只能使用当前数据库,如果要使用新的数据库,需要重新创建对应的用户并进行认证 ref

其他的基本操作可以利用python API完成,安装pymongo进行操作:具体的操作流程见连接: pymongo基础教程

还有一些基础的操作: 在mongodb中添加字段:

## 在原数据基础上新增字段,值一样 x = mycol.update_many({}, {"$set":{"add":1}}) for x in mycol.find({}): print(x) {'_id': ObjectId('6229bd99572ff0863d239dc2'), 'name': 'RUNOOB', 'alexa': '10000', 'url': 'https://·', 'add': 1} {'_id': ObjectId('6229bd9f572ff0863d239dc3'), 'name': 'Taobao', 'alexa': '100', 'url': 'https://·', 'add': 1} {'_id': ObjectId('6229bd9f572ff0863d239dc4'), 'name': 'QQ', 'alexa': '101', 'url': 'https://·', 'add': 1} {'_id': ObjectId('6229bd9f572ff0863d239dc5'), 'name': 'Facebook', 'alexa': '10', 'url': 'https://·', 'add': 1} {'_id': ObjectId('6229bd9f572ff0863d239dc6'), 'name': '知乎', 'alexa': '103', 'url': 'https://·', 'add': 1} {'_id': ObjectId('6229bd9f572ff0863d239dc7'), 'name': 'Github', 'alexa': '109', 'url': 'https://·', 'add': 1} ## 在原数据上新增字段,值为array add_dict = [{"name":"RUNOOB", "add_1":"t", "add_2":1}, {"name":"Taobao", "add_1":"tmal", "add_2":3}] for item in add_dict: mycol.update_many({"name":item["name"]}, {"$set":{"add_1":item["add_1"], "add_2":item["add_2"]}}) for x in mycol.find({}): print(x) {'_id': ObjectId('6229bd99572ff0863d239dc2'), 'name': 'RUNOOB', 'alexa': '10000', 'url': 'https://·', 'add': 1, 'add_1': 't', 'add_2': 1} {'_id': ObjectId('6229bd9f572ff0863d239dc3'), 'name': 'Taobao', 'alexa': '100', 'url': 'https://·', 'add': 1, 'add_1': 'tmal', 'add_2': 3} {'_id': ObjectId('6229bd9f572ff0863d239dc4'), 'name': 'QQ', 'alexa': '101', 'url': 'https://·', 'add': 1} {'_id': ObjectId('6229bd9f572ff0863d239dc5'), 'name': 'Facebook', 'alexa': '10', 'url': 'https://·', 'add': 1} {'_id': ObjectId('6229bd9f572ff0863d239dc6'), 'name': '知乎', 'alexa': '103', 'url': 'https://·', 'add': 1} {'_id': ObjectId('6229bd9f572ff0863d239dc7'), 'name': 'Github', 'alexa': '109', 'url': 'https://·', 'add': 1}

将pandas中数据转化为mongodb:

from pymongo import MongoClient import pandas as pd client = MongoClient("mongodb:user:pwd@ip") db = client.admin # define the specific database mycollection = db[collecion_name] # define colletions raw_data = pd.read_csv("xxx") raw_dict = raw_data.to_dict("record") x = mycollecion.insert_many(raw_dict) print(x.inserted_ids[:3]) # print top3 id of inserted data

读取mongodb数据转化为pandas dataframe

from pymongo import MongoClient import pandas as pd client = MongoClient("mongo:user:pwd@ip") db = client.dbname mycol = db[colletion_name] df = pd.DataFrame(list(mycol.find({}))) df.head() ## 获取字段 def cols_find(collection): cols = [] for i in range(1000): tmp = list(collection.find()[i]) cols.extend(tmp) cols = list(set(cols)) return cols

ref: 1.docker 安装 2.How can I load data from mongodb collection 3.insert new field in mongodb database 4.


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #mongodb入门笔记 #下载 #Docker #pull #run #name