美文网首页Pyhton
Python操作MongoDB

Python操作MongoDB

作者: HeloWxl | 来源:发表于2019-12-18 23:41 被阅读0次

1、目录

  • 1.连接数据库
  • 2.添加数据
  • 3.更新数据
  • 4.查询数据
  • 5.嵌套文档/查询嵌入

2、连接数据库

'''
    连接MongoDB数据库的两种方式
    1.无用户认证
    2.用户认证
'''

2.1 无用户认证

from pymongo import MongoClient

# 创建对象,连接本地的数据库(无用户认证)
# 方法一
client = MongoClient()

# 方法二
client1 = MongoClient('localhost',27017)

# 方法三
client2 = MongoClient('mongodb://localhost:27017')

# 连接数据库

db = client['db']

# 连接集合user,集合类似于关系数据库的数据表
# 如果集合不存在的情况下,就会新创建集合user

user_collection = db.user

2.2 用户验证

# 用户认证一
client3 = MongoClient()
db_auth = client3.admin
db_auth.authenticate('username','password')
db = client3['db']

# 用户认证二
client4 = MongoClient('mongodb://username:password@localhost:27017')
db = client4['db']

3、添加数据

3.1 单条数据

# 用户信息
user_info = {
    'name':'wangxianlin',
    'age':22,
    'hobbies':[
        'LOL','Movie'
    ],
    'addr':{
        'country':'China',
        'city':'合肥'
    }
}
# 插入数据库 单条插入,并返回_id
user_id = mdb_collection.insert_one(user_info).inserted_id
print(user_id)
image.png

3.2 多条数据插入

# 插入数据库 多条插入
user_infos = [{
    'name':'wanglong',
    'age':22,
    'hobbies':[
        'LOL','Movie','play cs','cs go'
    ],
    'addr':{
        'country':'China',
        'city':'北京'
    }
},
{
    'name':'Helos',
    'age':23,
    'hobbies':[
        'LOL','Movie','dota'
    ],
    'addr':{
        'country':'China',
        'city':'上海'
    }
}
]
# 插入多条数据,同时获取到插入的_id
user_ids = mdb_collection.insert_many(user_infos).inserted_ids
print(user_ids)
image.png

4、更新数据

常用的更新操作符:

    1. $set : 用来指定一个键的值,如果这个键不存在,就创建它,如果存在,就执行更新。
    2. $unset: 从文档中移除指定的键
    3. $inc: 修改器用来增加已有键的值,或者在键不存在时创建一个键。只能用于证书,长整数或者双精度浮点数。要是用在其他类型的数据上,就会导致操作失败。
    4. $rename: 操作符可以重命名字段名称,新的字段名称不能和文档中现有的字段名相同。如果文档中存在A,B字段,将B字段重命名为A字段,$rename会将A字段和值移除掉,然后将B字段名修改为A。
    5. $push: 如果指定的键已经存在,就会向已有的数组末尾加入一个元素;如果指定的键不存在,就会创建一个新的数组。

4.1 更新单条文档

  • 关键字:update_one
    update_one{筛选条件,更新内容}。如果筛选的条件为空,默认更新第一条文档
mdb_collection.update_one(
    {},#筛选条件
    {
        "$set":{'age':18,'name':'HeloWxl'}#更新内容
    }
)
#查询更新后的文档
result = mdb_collection.find(
    {"_id":123}
)
print(list(result))

4.2 更新多条文档

  • 关键字:update_many
    将年龄大于等于18 的用户,将年龄都修改为18
mdb_collection.update_many(
    {
        "age":{"$gte":18}

     },#筛选条件
    {
        "$set":{'age':18}#更新内容
    }
)

# 查询出年龄大于18的用户
result = mdb_collection.find(
    {
        "age":{"$gte":18}
    }
)
print(list(result))

5、查询数据

5.1 普通查询

查询关键字:find

  • 不带条件查询
#如果查询的条件为空的时候,则默认为查询全部的数据
result = mdb_collection.find(
    {}
)
print(list(result))
image.png
  • 带条件查询
#查询_id = 123的数据
result = mdb_collection.find(
    {'_id':123}
)
print(list(result))

5.2 多条件查询

  • 查询操作符 and or
# $and  and操作符    $or or 操作符
#$and 操作符
result = mdb_collection.find(
    {"$and":[{'_id':123,'name':'HeloWxl'}]}
)
print(list(result))

#$or 操作符
result = mdb_collection.find(
    {"$or":[{'name':'HeloWxl'},{'name':'Helos'}]}
)
print(list(result))
  • 大于,小于操作符
$lt 小于
$lte 小于等于
$gt 大于
$gte 大于等于
$in (in,符合范围内)
$nin (not in ,范围之外)
#$lt $gt 操作符
result = mdb_collection.find(
    {
        "age":{"$lt":30,"$gt":20}
    }
)
print(list(result))   
  
#$in 操作符
result = mdb_collection.find(
    {
        "age":
            {
            "$in":[18,20,30]
            }
    }
)
print(list(result)) 

比较查询和多条件查询存在明显的区别:

  • 1.多条件查询是以操作符为字典的键,比较查询以字段为字典的键。
    -2.多条件查询的值是列表格式的,比较查询的值是字典格式的。

5.3 模糊查询

模糊查询实际上是加入正则表达式实现

#方法一
result = mdb_collection.find(
    {
        "name":{"$regex":'.*xianlin.*'}
    }
)
print(list(result))

import re
# 方法二
regex = re.compile('.*xianlin.*')
result = mdb_collection.find(
    {
        "name":regex
    }
)
print(list(result))

6、嵌套文档/查询嵌入

#查询 addr : {city:'合肥'}
#查询嵌套的字段,只需要查询嵌套的某个值即可
result = mdb_collection.find(
    {'addr.city':'合肥'}
)
print(list(result))

# 如果在addr里面还嵌套一个文档
result = mdb_collection.find(
    {'addr.city.code':'1002'}
)
print(list(result))

相关文章

  • python数据库操作MySQL-MongoDB-Redis之二

    python数据库操作MySQL-MongoDB-Redis之二 MongoDB 一 MongoDB 在...

  • MongoDB初使用

    1.mongodb安装 参考官方tutorials 2.mongodb管理 3.python操作mongodb 3...

  • Day 2

    熟悉Linxu,gi,vim操作 熟悉Python的语法 熟悉MongoDB的增删改查操作 用Python + g...

  • Mongodb

    mongodb学习 知识要点: mongodb基本结构 库,集合操作 数据(文档)的增 删 改 查 python操...

  • Python实战计划学习第二周

    在MongoDB中筛选房源 学习如何操作mongodb数据库 学习Python '三元操作符' 爬取手机号 设计断...

  • Python操作Mongodb

    一 导入 pymongo from pymongo import MongoClient 二 连接服务器 端口号 ...

  • Python操作MongoDB

    调用pymongo库 1.安装pymongo 2.在调用中需要使用的对象 1.MongoClient对象:用于与M...

  • Python——MongoDB操作

    pymogo shell连接mongodb的命令mongo 连接mongo 默认连接本地mongo 参数形式连接m...

  • python mongoDB操作

    如果设置了用户和密码,db.authenticate(user, password)登录即可,由于python的参...

  • Python操作MongoDB

    自学整理记录,大神见笑 MongoDB简介 MongoDB是非关系数据库,实际上就是一组json字符串 向Mong...

网友评论

    本文标题:Python操作MongoDB

    本文链接:https://www.haomeiwen.com/subject/endpnctx.html