NoSQL之Mongodb
mongodb简介
MongoDB是一个基于分布式文件存储的数据库,由c++语言编写.
在高负载的情况下,添加更多的节点,可以保证服务器性能,MongoDB指在为web应用提供可扩展的高性能数据存储解决方案.
MongoDB将数据存储为一个文档,数据结构有键值对组成.MongoDB文档类似于json对象
{ "_id" : ObjectId("5d0f43c6bf3f9a9fb70def86"), "name" : "alexDSB" }
1.MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。 2.你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。 3.你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。 4.如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。 5.Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。 6.MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。 7.Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。 8.Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。 9.Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。 10.GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。 11.MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。 12.MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。 13.MongoDB安装简单。
MongoDB概念解析
SQL术语/概念 | MongoDB术语/概念 | 解释说明 |
database | database | 数据库 |
table | table | 数据库表/集合 |
row | document | 数据记录/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表连接,MongoDB不支持 | |
primary key | primary key | 主键,MongoDB自动将_id字段设置 |
通过下图,我们可以更直观的了解Mongo中的一些概念
启动MongoDB数据库
1.我们下载完成以后,需要环境配置
你下载的位置: 比如:C:\mongo.db\bin 注意:到bin下 在配置环境变量 -------------------------- 通过命令 mongod 来启动 MongoDB 默认端口 27017 redis:6379 Mysql:3306 mongod --dbpath="指定数据库存放路径" 比如:从新创建位置:D:\data\db
2应用连接MongoDB数据库
通过 mongo 指令 进入本地数据库连接
3.MongoDB数据
mysql - 数据库服务 - 数据库 - 数据表 - 字段 - 数据row mongodb - 数据库服务 - 数据库 - 数据表 - 字段 - 数据 show databases 查看当前数据库服务 中包含的数据库 磁盘中的数据库 use db_name 切换当前使用的数据库 ,如果数据库不存在,会在内存中创建一个新的数据库 db 显示当前使用的数据库 ,指数据库名 show tables 查看当前数据库中的数据表 - 预览 - 磁盘中的数据表
4.创建数据表
db.数据表名 在内存中创建数据库表
5.写入数据才能将内存中的数据库和数据表永久写入带磁盘中
orm.create({}) == orm.insert({}) 增加数据 db.users.insert({"name":1,"age":2}) 数据库.数据表.指令({数据}) 查询数据 db.users.find() 数据库.数据表.指令()
6.连接数据库MongoDB软件版
就可以使用了
pycharm连接MongoDB
1.在pycharm下载pymongo
2.导入模块,使用
import pymongo conn= pymongo.MongoClient('127.0.0.1',27017) #MongoDB默认端口27017 MONGO_DB=conn['s17DB'] #使用了不存在的对象即创建该对象 #增加 MONGO_DB.users.insert() MONGO_DB.users.insert_one({"name":'alexDSB'}) #增加一个 MONGO_DB.users.insert_many([{"name":"alexDSB"},{"name":"路飞"}]) #增加多个 #高级 # res = MONGO_DB.users.insert_one({"name":"MJJ","age":45,"hobby":["抽烟","喝酒","烫头"]}) #查 res = MONGO_DB.users.find_one({"age":1},{"_id":0}) print(res,type(res)) ress = list(MONGO_DB.users.find({},{"_id":0})) print(ress) for item in ress: print(item) print(ress) # find({}) 是一个生成器 # res = list(MONGO_DB.users.find({"$or":[{"name":"配齐"},{"age":1}]},{"_id":0})) # res = list(MONGO_DB.users.find({"name":{"$in":["alex","alexDSB","配齐"]}})) # print(res) #改 # res = MONGO_DB.users.update_many({"name":"alexDSB"},{"$set":{"age":2}}) # print(res.modified_count) # MONGO_DB.users.update_one({"hobby":"烫头","name":"MJJ"},{"$set":{"hobby.$":"绿玉屠龙"}}) # MONGO_DB.users.update_one({"name":1},{"$push":{"package":{"name":"剧毒开天","act":1099,"p":"能换好多元宝"}}}) #删 #MONGO_DB.users.delete_one({"name":3}) # MONGO_DB.users.delete_many({"name":"alexDSB"})