[MongoDB]MongoDB快速上手

MongoDB的简介

文档数据库,NoSQL中最像SQL的数据库,最像关系型数据库的非关系型数据库。

基于分布式文件存储的开源数据库系统,旨在为WEB应用提供可扩展的高性能数据存储解决方案,mongo将数据存储为一个文档,文档数据表示为Binary Json格式

MongoDB数据模型

以下是关系型数据库与MongoDB数据库的对比

关系型数据库 MongoDB数据库
1. 数据库
2. 表
3. 行
1. 数据库
2. Collection
3. Document
数据库 数据库
表格
name | age
Jack | 27
Mack | 26
集合
{‘name’:‘Jack’,‘age’:27}
{‘name’:‘Mack’,‘age’:26}

Mack | 26
文档
{‘name’:‘Mack’,‘age’:26}

MongoDB进入与退出

进入用关键字 mongo,退出用 exit

库、集合操作

库级操作语句

简介 关键字
显示所有库 show dbs
切换/创建数据库 use 数据库名称
查看所在库 db
删除当前所在的库 db.dropDatabase()

集合操作语句

显示当前数据库的集合:show collections

创建集合:db.createCollection(name)

删除集合:db.集合名称.drop()

文档操作

文档即关系数据库的数据,文档结构类似于json

添加文档(数据)

db.集合名称.insert(document)

每一条数据,就是一个document,以键值对的形式组成

db.student.insert({name:'xiaoming', age:18})

添加文档时,如果不指定 _id参数,MongoDB会自动为文档分配一个唯一的ObjectId,同样也可以指定 _id参数:

db.student.insert({'_id':1, name:'xiaoming', age:18})

添加多条文档:

db.student.insert([
    {name:'xiaoming', sex:'男', age:16},
    {name:'xiaobai', sex:'男', age:18},
    {name:'moran' sex:'女', age:18},
])

查询文档(数据)

db.集合名称.find()

查看文档也会以键值对的形式展示,并且会附带 _id

查看集合中全部数据:db.student.find()

格式化显示:db.student.find().pretty()

查看满足条件的数据:db.student.find({name:'jack'})

条件筛选

and 条件

{$and:[{expression1},{expression2}...]}

用法是$and作为键,与作为值的列表内的条件进行运算

or 条件

{$or:[{expression1},{expression2}...]}

and 和 or 混用
db.table.find({$or:[{$and:[{sex:'女'}, {age:18}]},{$and:[{sex:'男'}, {age:{$gt:18}}]}]})
#查找年龄等于18的女性或年龄大于18的男性
其他操作符
操作符 描述
$ne 不等于
$gt 大于
$lt 小于
$gte 大于等于
$lte 小于等于

修改文档

db.集合名称.update(, , {multi:})

修改一条数据: db.table.update({sex:'男'}, {age:20})

只会更新所匹配到的第一条集合,并且会替换掉集合里的全部内容,修改性别为男的第一条数据,改为{age:20}

指定属性修改: db.table.update({name:'jack'}, {$set: {age:16}})

将name为jack的文档中的age修改为16

更新集合中所有满足条件的文档:db.table.update({sex:'男'}, {$set:{sex:'女'}},{ multi:true})

删除文档(数据)

db.集合名称.remove(, {justOne:})

删除集合中所有的文档:db.table.remove({})

删除集合中满足条件的所有文档: db.table.remove({sex: '男'})

只删除集合中满足条件的第一条文档: { justOne: true }

db.table.remove({sex:'男'}, { justOne:true} )

MogoDB交互

pymongo

在终端中输入(安装): pip install pymongo

Python 交互 MongoDB 的3种情况:

本地Python连接VBox里的Mongo

1. 用的本地的python
    1. 本地python是没有pymongo, pip install pymongo
2. MongoClient('127.0.0.1', 1235)
    1. Box: 如果虚拟机是在box中
        1. 要先设置端口转发, 127.0.0.1 1235       27017
        2. 互联网主机信息互通, A,B电脑能上网, A电脑能通过B电脑的能上网的IP地址来访问
            B电脑, 同样的B如果要访问A, 也得有A电脑的能上网的Ip地址.
        3. sudo ufw allow 27017
        4. sudo vim /etc/mongodb.conf
            bind_ip = 0.0.0.0
        5. sudo service mongodb restart

本地Python连接VM里的Mongo

1. 用的是本地Python
    1. 本地python是没有pymongo, pip install pymongo
2. 用的是vmware, MongoClient('你虚拟机能上网的ip', 27017)
    1. sudo ufw allow 27017
    4. sudo vim /etc/mongodb.conf
        bind_ip = 0.0.0.0
    5. sudo service mongodb restart

​ 虚拟机Python使用虚拟机里的Mongo

1. 用的不是本地py, 用的是虚拟机的python
    1. 如果虚拟机的python没有pymongo, pip3 install pymongo 或者pip install pymongo
    2. 或者使用Pycharm安装pymongo
2. MongoClient('127.0.0.1', 27017) 或者 MongoClient()
    因为你的虚拟机的mongodb 和你的python再同一个主机主机里面.
    所以你不需要修改配置文件, 也不需要开放端口.
    因为默认mongo允许本机的对象访问, ubuntu允许本机的对象访问27017端口

参考文档:

  1. Python操作MongoDB看这一篇就够了
  2. MongoDB用户创建

你可能感兴趣的:(数据库,mongodb)