编程技术Python语言与信息数据获取和机器学习Python 运维

MongoDB的安装配置以及使用Python进行操作

2017-07-13  本文已影响594人  SHISHENGJIA

首先在下载页面下载对应版本的MongoDB,下面以windows平台为例。

设置MongoDB服务

1.将MongoDB安装在F:/mongodb,然后创建数据存放位置F:/mongodb/data/db
2.F:/mongodb/data/下新建一个log文件夹,在该文件夹下创建mongodb.log文件
3.F:/mongodb下新建mongo.config,并添加以下内容:

dbpath=F:\mongodb\data\db
logpath=F:\mongodb\data\log\mongodb.log

4.以管理员身份打开cmd,并进入F:/mongodb/bin,输入以下命令:

mongod --config F:\mongodb\mongo.config --install --serviceName "MongoDB" --journal 

5.执行net start mongoDB命令即可开启服务
6.为了方便,在系统变量的Path中添加MongoDB bin文件所在目录F:/mongodb/bin,然后使用mongo命令进入数据库

使用Python操作MongoDB数据库

首先安装相应模块。

pip install pymongo

下面以一个小demo介绍基本操作。

# -*- coding: utf-8 -*-
from pymongo import MongoClient
from datetime import datetime
from bson.objectid import ObjectId


class Test:
    def __init__(self):
        """
        连接MongoClient
        由3种方法可以选择,看使用情况
        """
        # 简写
        self.client = MongoClient()
        # 指定端口和地址
        # self.client = MongoClient('127.0.0.1', 27017)
        # 使用URI
        # self.client = MongoClient('mongodb://127.0.0.1:27017/')

        # 选择数据库
        self.db = self.client['test']

    def add_one(self, title, number, created_time=datetime.now()):
        """
        添加一条数据
        需要注意的是Mongo中不需要事先建立表,插入数据的同时直接根据所传入字典对象的内容生成表
        """
        # 创建一个字典对象
        post = {
            'title': title,
            'number': number,
            'created_time': created_time
        }
        # 指定将数据添加到blog下的post表
        return self.db.blog.post.insert_one(post)

    def find_by_id(self, post_id):
        """
        通过ID查找数据
        Mongo中自动生成的ID主键是ObjectId(id)的形式,所以在查询的时候要遵循该格式
        从bson.objectid导入ObjectId
        """
        return self.db.blog.post.find_one({'_id': ObjectId(post_id)})

    def update_number(self, post_id, number):
        """
        更新一条数据
        在update_one函数中,通过第一个参数查找更新对象,通过第二个参数对查找到的对象进行更新
        下面语句的含义是对指定ID的数据的number字段加上一个number值,通过 $inc 实现
        """
        return self.db.blog.post.update_one({'_id': ObjectId(post_id)}, {'$inc': {'number': number}})

    def update_all_number(self, number):
        """
        批量更新
        update_many函数参数的作用同update_one
        {} 表示没有查找限制,更新全部的数据
        """
        return self.db.blog.post.update_many({}, {'$inc': {'number': number}})

    def delete_by_id(self, post_id):
        """
        根据ID删除,同样注意id值的格式
        """
        return self.db.blog.post.delete_one({'_id': ObjectId(post_id)})

MongoDB可视化工具

Robo 3T

在Tree Mode下查看数据

image.png
在Table Mode下查看数据
image.png
在Text Mode下查看数据
image.png
上一篇下一篇

猜你喜欢

热点阅读