MongoDB-4.2.1 之安装和使用

安装

下载安装包

我自己电脑是 Windows7 的老古董,所以就下载老版本的 MongoDB。

mongodb:

https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2012plus-4.2.1.zip

解压安装包到指定路径

我解压到的 C 盘

C:\mongodb-4.2.1

添加环境变量

创建数据库和日志目录

启动守护进程 

mongod --dbpath "C:\mongodb-4.2.1\data" --logpath "C:\mongodb-4.2.1\logs\mongo.log"

连接MongoDB数据库

mongo

下载 MongoDB Compass

compass:

https://downloads.mongodb.com/compass/mongodb-compass-1.25.0-win32-x64.zip

启动连接数据库

用户名密码登录

默认不需要用户名密码即可登录,但我们可以自己创建用户名密码以及指定对应的的权限。

db.createUser(
  {
    user: "admin",
    pwd: "admin",
    roles: [ { role: "readWrite", db: "admin"} ]
  }
)

然后就可以使用新的用户名密码在 Compass  进行登录了。

使用

数据库操作

创建数据库

> use test
switched to db test

集合操作

创建集合

db.createCollection("orders")
{ ok: 1 }

操作文档

插入文档

db.orders.insertOne({ "username": "Tom", "product": "phone", "price": 1000 })

查询文档

db.orders.find({username:"Tom"})
{ _id: ObjectId("665c333e567231295cf51a71"),
  username: 'Tom',
  product: 'phone',
  price: 1000 }

索引操作

创建索引

db.orders.createIndex({ "username": 1 })
{ createdCollectionAutomatically: false,
  numIndexesBefore: 1,
  numIndexesAfter: 2,
  ok: 1 }

API接口

Python连接操作

from pymongo import MongoClient

# 创建MongoDB连接
client = MongoClient('mongodb://admin:admin@localhost:27017')


# 选择数据库和集合
# db = client['test']  # 选择数据库
# collection = db['orders']  # 选择集合


class MongoDbHandler:
    def __init__(self):
        self.client = client
        self.db = client['test']
        self.collection = self.db['orders']

    def list_database_names(self):
        print(self.client.list_database_names())

    def find_data(self):
        # for document in self.collection.find({"username": "Looking"}):
        for document in self.collection.find().sort("username"):
            print(document)
            # {'_id': ObjectId('665c333e567231295cf51a71'), 'username': 'Tom', 'product': 'phone', 'price': 1000}
            # {'_id': ObjectId('665c33d6567231295cf51a72'), 'username': 'Looking', 'product': 'Book', 'price': 50}
            # {'_id': ObjectId('665c3c7cec9751b7de2b09d6'), 'username': 'John', 'product': 'Shoes', 'price': 500}
            # {'_id': ObjectId('665c3d90b7e847ae9f730c62'), 'username': 'Sandra', 'product': 'Shoes', 'price': 500}
            # {'_id': ObjectId('665c3d90b7e847ae9f730c63'), 'username': 'Jerry', 'product': 'Food', 'price': 500}

    def insert_one(self):
        data = {"username": "John", "product": "Shoes", "price": 500}
        res = self.collection.insert_one(data)
        print(res)  # InsertOneResult(ObjectId('665c3c7cec9751b7de2b09d6'), acknowledged=True)

    def insert_many(self):
        datas = [
            {'username': 'Tom', 'product': 'phone', 'price': 1000},
            {'username': 'Looking', 'product': 'Book', 'price': 50},
            {'username': 'John', 'product': 'Shoes', 'price': 500},
            {'username': 'Sandra', 'product': 'Shoes', 'price': 500},
            {'username': 'Jerry', 'product': 'Food', 'price': 500},
        ]
        res = self.collection.insert_many(datas)
        print(res)
        # InsertManyResult([ObjectId('665c3d90b7e847ae9f730c62'), ObjectId('665c3d90b7e847ae9f730c63')], acknowledged=True)

    def update_data(self):
        query = {"username": "Tom"}
        new_values = {"$set": {"price": 12345}}
        res = self.collection.update_one(query, new_values)  # update_one 只修改匹配到的第一个结果
        # res = self.collection.update_many(query, new_values)  # update_many 用于修改所有匹配的结果
        print("matched:", res.matched_count)
        # matched: 1
        print("modified:", res.modified_count)
        # modified: 1

    def delete_data(self):
        query = {"username": "John"}
        res = self.collection.delete_one(query)  # delete_one 只删除匹配到的第一个结果
        # res = self.collection.delete_many({})  # delete_many 删除所有匹配的文档,如果传入空查询对象,删除所有
        print("acknowledged:", res.acknowledged)
        # acknowledged: True
        print("deleted_count:", res.deleted_count)
        # deleted_count: 1

    def delete_collection(self):
        self.collection.drop()

    def create_collection(self):
        self.db.create_collection("test")


if __name__ == '__main__':
    mongodb_handler = MongoDbHandler()
    # mongodb_handler.list_database_names()
    mongodb_handler.find_data()
    # mongodb_handler.insert_one()
    # mongodb_handler.insert_many()
    # mongodb_handler.update_data()
    # mongodb_handler.delete_data()
    # mongodb_handler.delete_collection()
    # mongodb_handler.create_collection()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/673176.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

gitlab服务器迁移(亲测有效)

描述:最近公司迁移gitlab,我没有迁移过,经过网上查找资料最终完成迁移,途中也遇到挺多坑和两个问题,希望能帮到你。 新服务器安装gitlab 注意:新服务器gitlab版本也需要和旧版本一致。 首先查看原Gitlab…

渗透测试靶机----FirstLeads_1.3

渗透测试靶机----FirstLeads_1.3 启动靶机,扫描ip,平平无奇 可以看出,这里是存在139这个主机的,这就是扫描出来的靶机ip继续探测端口及其他信息 发现这里只开启了80 端口 尝试一些基本目录,发现存在robot.txt文件目录…

WIN10环境下xposed环境搭建

禁止拿来干坏事,仅做学习为目的 环境需求 1.夜神模拟器7.1 2.Android stdio 2022.3.1 3. Adb环境配置 具体实现 1.安装xposed 打开可一键安装,重启 2.连接虚拟机 adb connect 127.0.0.1:620013.打开as,进入project 4.在lib下添加准备好的jar包 …

JAVAEE1

Web前端: 1.建立web开发的息维模式写代码不仅仅是为了实现某个功能,更是学习解决问题的思维方式 2.先使用,再理解,会导致刚开始比较懵,不知其所以然.切忌不可深陷其中, 3.涉及简单的软件工程的设计思想&…

排序方法大汇总

以下所有排序方法均以排升序为例 一.插入排序 1.直接插入排序 1>方法介绍:假定前n个数据有序,将第n1个数据依次与前n个数据相比,若比第i个数据小且比第i-1个数据大则插入两者之间 2>时间复杂度:O(N^2) 空间复杂度&#…

数据结构与算法05-链表

介绍 基于结点的数据结构拥有独特的存取方式,因此在某些时候具有性能上的优势。 本章我们会探讨链表,它是最简单的一种基于结点的数据结构,而且也是后续内容的基础。 你会发现,虽然链表和数组看上去差不多,但在性能上…

ThingsBoard MQTT 连接认证过程 源码分析+图例

整个连接过程如图所示: 高清图片链接 1、环境准备 thingsboard3.5.1 源码启动。(不懂怎么启动的,大家可以看我的博文ThingsBoard3.5.1源码启动)MQTTX 客户端(用来连接 thingsboard MQTT)默认配置。queue.…

接口以及会话控制

接口 接口是前后端交互通信的桥梁 简单理解:一个接口就是服务中的一个路由规划,根据请求响应结果 接口的英文单词是API(Application Program Interface),所以有时也称之为API接口 这里的接口指的是数据接口,与编程语言&#x…

python基础知识点总结(第二节判断与循环)

一、判断语句 1、if判断语句 ~if语句的基本格式 if 要判断的条件: 条件成立时,要做的事情 ~if语句的注意事项: 判断语句的结果一定要是布尔类型不要忘记判断条件后的:冒号归属于if语句的代码块,需要在前方填…

【软件测试】6.设计测试用例的设计方法

目录 1.基于需求的设计方法 2.具体的设计方法 2.1等价类 2.2边界值 2.3正交法 2.4判定表法 2.5场景法 2.6 错误猜测法 1.基于需求的设计方法 基于需求的设计方法也是总的设计测试用例的方法,在工作中,我们需要参考需求文档/产品规格说明书来设计…

告别鼠标,安卓模拟鼠标,绘图板,手写板操作电脑PC端,卡卡罗特也说好,儿童节快乐

家人们,上链接了:https://download.csdn.net/download/jasonhongcn/89387887 横屏模式: 竖屏模式: 操作说明: 1. 手势滑动模拟鼠标移动 2. 界面如果有滚动条,右手指按紧,通过左手指移动实现…

【智能算法】红嘴蓝喜鹊优化算法(RBMO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年,S Fu受到自然界中红嘴蓝喜鹊社会行为启发,提出了红嘴蓝喜鹊优化算法(Red-billed Blue Magpie Optimizer, RBMO)。 2.算法原理 2.1算…

【原创】springboot+mysql员工管理系统

个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…

找出字符串中出现最多次数的字符以及出现的次数

str.charAt(i) 是JavaScript中获取字符串中特定位置字符的方法&#xff0c;表示获取当前的字符。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-wi…

Linux基础之进程控制--进程的创建和退出

目录 一、进程的创建 二、进程的终止 2.1 进程退出的场景 2.2 main()函数的返回值 2.3 用exit和_exit进行退出 2.4 进程异常终止 一、进程的创建 关于一个进程是如何被创建出来的&#xff0c;我们已经有所介绍这里我在给大家补充些东西。 首先&#xff0c;我们知道…

python之tkinter学习笔记

目录 Widget概览 加强版的tkinter模块 一、通用的 1.1、Label PhotoImage (gif图片加载) jpg图片加载 config方法-计时器 1.2、PanedWindow 1.3、LabelFrame 二、tkinter专有 2.1、Menu菜单复选框 2.2、工具栏 三、tkinter.ttk专有 3.1、Separator分隔线 3.2、n…

【C++】C++ 宾馆酒店管理系统(源码+数据+论文)【独一无二】(史上功能最全,拿来即用)

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

LeetCode-47. 全排列 II【】

TOC 题目描述&#xff1a; 给定一个可包含重复数字的序列 nums &#xff0c;按任意顺序 返回所有不重复的全排列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,2] 输出&#xff1a; [[1,1,2], [1,2,1], [2,1,1]] 示例 2&#xff1a; 输入&#xff1a;nums [1,2,3] 输…

InnoDB Data Locking - Part 2.5 “Locks“ (Deeper dive)

All together now 现在让我们把在 InnoDB Data Locking – Part 2 “Locks” 中学习到的有关表锁和记录锁的知识结合起来&#xff0c;以理解以下情况&#xff1a; 我们看到&#xff1a; 第一个 SELECT * FROM t FOR SHARE; 在 5、10、42 和 supremum 伪记录上创建了 S 锁。…

【软件设计师】2022年上半年真题解析

​​冯诺依曼计算机体系结构的基本特点是&#xff1a; A. 程序指令和数据都采用二进制表示 - 这是正确的&#xff0c;因为冯诺依曼架构下的计算机使用二进制形式来表示和处理所有信息&#xff0c;包括指令和数据。 B. 程序指令总是存储在主存中&#xff0c;而数据则存储在高速…