官方网站:https://www.mongodb.com

官方文档:https://docs.mongodb.com

GitHub:https://github.com/mongodb

中文教程:http://www.runoob.com/mongodb/mongodb-tutorial.html

  • RoboMongo/Robo 3T,它使用简单,功能强大,官方网站为https://robomongo.org/,下载链接为https://robomongo.org/download
  • Studio 3T:简单易用,它同样具有方便的图形化管理界面,官方网站为https://studio3t.com,下载链接为https://studio3t.com/download/

pymongo

  • GitHub:https://github.com/mongodb/mongo-python-driver
  • 官方文档:https://api.mongodb.com/python/current/
  • PyPI:https://pypi.python.org/pypi/pymongo
  • 安装:  pip install pymongo

连接MongoDB,指定数据库,指定集合

import pymongo  # 1.导入数据包# 2.创建连接对象,port默认27017,加上配置的用户名和密码,否则会pymongo.errors.OperationFailure: not authorized on test to execute command
client = pymongo.MongoClient('mongodb://user:password@localhost:27017/')  #client = pymongo.MongoClient(host='localhost', port=27017)# 另一种创建连接对象的方式,指定用户和权限方式还不清楚,暂时不推荐db = client.test  # 3.指定数据库#db = client['test']  # 另一种指定数据库方式collection = db.students  # 4.指定集合,声明了一个Collection对象#collection = db['students']  # 指定集合另一种方式

插入数据

1.插入一条数据

student = {'id': '20170101','name': 'Jordan','age': 20,'gender': 'male'
}  # 将一条数据以字典形式表示result = collection.insert_one(student)  # insert_one传入字典,返回InsertOneResult对象
print(result.inserted_id)  # inserted_id属性获取数据_id,每条数据其实都有一个_id属性来唯一标识。如果没有显式指明该属性,MongoDB会自动产生一个ObjectId类型的_id属性

2.插入多条数据

student1 = {'id': '20170101','name': 'Jordan','age': 20,'gender': 'male'
}student2 = {'id': '20170202','name': 'Mike','age': 21,'gender': 'male'
}result = collection.insert_many([student1, student2])  # insert_many传入列表,列表元素是字典,返回的类型是InsertManyResult
print(result.inserted_ids)  # inserted_ids属性获取数据_id列表

查询

1.普通查询

  • find_one()查询得到的是单个结果
result = collection.find_one({'name': 'Mike'}) 
  • 根据ObjectId来查询,需要使用bson库里面的objectid
from bson.objectid import ObjectIdresult = collection.find_one({'_id': ObjectId('593278c115c2602667ec6bae')})
  • find()多条数据的查询,返回Cursor类型,一个生成器对象
results = collection.find({'age': 20})
for result in results:print(result)

2.条件查询

  • 比较查询

例如:

results = collection.find({'age': {'$gt': 20}})  # 查询年龄大于20的数据
比较符号
符号     含义     示例
$lt     小于   {'age':{'$lt':20}}
$gt    大于   {'age':{'$gt':20}}
$lte     小于等于     {'age':{'$lte':20}}
$gte     大于等于   {'age':{'$gte':20}}
$ne     不等于   {'age':{'$ne':20}}
$in     在范围内     {'age':{'$in':[20, 23]}}
$nin     不在范围内     {'age':{'$nin':[20, 23]}}

其他条件:

例如:

results = collection.find({'name': {'$regex': '^M.*'}})  # 正则匹配查询
功能符号
符号     含义    示例    示例含义
$regex 匹配正则表达式 {'name': {'$regex': '^M.*'}} name以M开头
$exists  属性是否存在  {'name': {'$exists': True}} name属性存在
$type  类型判断 {'age': {'$type': 'int'}} age的类型为int
$mod 数字模操作  {'age': {'$mod': [5, 0]}} 年龄模5余0
$text 文本查询  {'$text': {'$search': 'Mike'}}  text类型的属性中包含Mike字符串
$where 高级条件查询  {'$where': 'obj.fans_count == obj.follows_count'} 自身粉丝数等于关注数

详细用法官方文档:https://docs.mongodb.com/manual/reference/operator/query/

  • 计数

统计查询结果有多少条数据可以对查询结果调用count()方法
例如:

count = collection.find({'age': 20}).count()
  • 排序

排序时,直接调用sort()方法,并在其中传入排序的字段及升降序标志.
例如:

results = collection.find().sort('name', pymongo.ASCENDING)
pymongo.ASCENDING指定升序,pymongo.DESCENDING指定降序排列
  • 偏移

skip()方法偏移几个位置,比如偏移2,就忽略前两个元素,得到第三个及以后的元素
limit()方法指定要取的结果个数
可以配合使用选取结果范围

例如:

results = collection.find().sort('name', pymongo.ASCENDING).skip(2).limit(2)
result = col.find().limit(1).skip(random.randint(0,col.count()))# 在集合中随机取一条数据
  • 更新

update()方法,指定更新的条件和更新后的数据即可(官方不推荐)

例如:

condition = {'name': 'Kevin'}
student = collection.find_one(condition)
student['age'] = 25
result = collection.update(condition, student)
print(result)
$set操作符对数据进行更新:
result = collection.update(condition, {'$set': student})

只更新student字典内存在的字段,如果不用$set的话,则会把之前的数据全部用student字典替换

update_one()方法,只会找到一条更新
第二个参数不能再直接传入修改后的字典,而是需要使用{'$set': student}这样的形式,其返回结果是UpdateResult类型。调用matched_count和modified_count属性,可以获得匹配的数据条数和影响的数据条数。
例如:

condition = {'name': 'Kevin'}
student = collection.find_one(condition)
student['age'] = 26
result = collection.update_one(condition, {'$set': student})
print(result.matched_count, result.modified_count)
update_many()方法,则会将所有符合条件的数据都更新

注意:replace_one的使用

collection.replace_one(filter={'':item['']},replacement=item,upsert=True)
# filter根据哪个键进行更新
# replacement 更新后的set
# 效果和update_one第二个参数为item时类似,即只覆盖该条数据,未更新的数据将会被删除。
  • 删除

remove()方法指定删除的条件即可,此时符合条件的所有数据均会被删除(官方不推荐)

delete_one()即删除第一条符合条件的数据,delete_many()即删除所有符合条件的数据

例如:

result = collection.delete_one({'name': 'Kevin'})
print(result)
print(result.deleted_count)
result = collection.delete_many({'age': {'$lt': 25}})
print(result.deleted_count)  # deleted_count属性获取删除的数据条数

其他操作

  • 组合方法

find_one_and_delete()、find_one_and_replace()和find_one_and_update(),它们是查找后删除、替换和更新操作

  • 对索引进行操作

create_index()、create_indexes()和drop_index()等

详细用法文档:http://api.mongodb.com/python/current/api/pymongo/collection.html

原文:https://blog.csdn.net/qq_32392853/article/details/81519291

pymongo操纵MongoDB相关推荐

  1. mongo go 查询指定字段_使用PyMongo查询MongoDB数据库!

    总览 我们将讨论如何使用PyMongo库查询MongoDB数据库. 我们将介绍MongoDB中的基本聚合操作. 介绍 随着互联网的全球普及,我们现在正在以前所未有的速度生成数据.因为执行任何类型的分析 ...

  2. 用pymongo对mongoDB增删改查(CRUD)

    pymongo操作mongoDB的增删改查 | CRUD pymongo简介 连接本地mongoDB 连接远程MongoDB 数据库CRUD 使用现有数据库 增 删 改 查 集合CRUD 增 删 改 ...

  3. Python使用pymongo连接MongoDB数据库并进行操作

    一.基本概述 目前电脑上已经下载了MongoDB数据库.navicat for mongodb作为mongoDB的可视化工具,形如navicat for mysql作为mysql的可视化工具. 使用P ...

  4. pymongo查询列表元素_使用PyMongo查询MongoDB数据库!

    作者|LAKSHAY ARORA 编译|Flin 来源|analyticsvidhya 介绍 随着互联网的普及,我们现在正以前所未有的速度生成数据.因为执行任何类型的分析都需要我们从数据库中收集/查询 ...

  5. python使用pymongo读写mongodb

    转载请注明出处:python使用pymongo读写mongodb 准备工作 在开始之前,请确保已经安装好了MongoDB并启动了其服务,并且安装好了Python的PyMongo库. PyMongo介绍 ...

  6. 使用pymongo连接mongodb时报错:pymongo.errors.OperationFailure: not authorized

    连接本机或局域网部署的mongodb时可以用以下方法: 1 from urllib import parse 2 from pymongo import MongoClient 3 4 host = ...

  7. pymongo连接mongodb的replset

    replset的一个目的是保持集群的健壮性,但是,因此需要通过合理的方式连接整个replset,才能在primary宕机的时候,自动启用secondary. 为此,pymongo提供了replica_ ...

  8. python下使用pymongo操作mongodb

    为什么80%的码农都做不了架构师?>>>    Mongo DB 是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式备受当前IT从业人员的青睐. Mon ...

  9. 100天精通Python(进阶篇)——第40天:pymongo操作MongoDB数据库基础+代码实战

    文章目录 一.安装pymongo库 二.数据库操作 1.连接数据库 2.数据库操作 3.集合操作 4.插入文档 插入一个文档 插入多个文档 插入指定 _id 的多个文档 5.查看文档 查询一条数据 查 ...

最新文章

  1. php网站挂linux,Linux环境下php实现给网站截图的方法
  2. UE4材质:纯数学算法实现水面水波扩散效果
  3. svn之迁移代码技巧
  4. multi task训练torch_Multi-task Learning的三个小知识
  5. 网络编程-Socket介绍
  6. 如何看待0.5元可买到身份匹配的人脸数据?
  7. viewpager中fragment的生命周期管理
  8. channelsftp实现两个xftp之间文件互传_基于Jsch实现Java操作linux服务器
  9. 企业微信API群机器人配置
  10. Stata:产生唯一数据编码的三种方法
  11. Python之ASCII码相关
  12. 发现谷歌学术搜索真好用啊
  13. 本人的月末结账步骤备忘
  14. 改善民生 住有所居(加快经济发展方式转变)
  15. 命令与征服:红色警戒3 解决游戏启动时界面黑屏,但右上角有五角星电脑卡死的问题——hosts
  16. 什么是项目集(PgMP)?
  17. 每日辣评:快手和抖音、爱奇艺巨亏、搜狗输入法变声功能、贝佐斯
  18. Android: SQLite + ListView 实现 新闻 App
  19. 对抗生成网络(GAN)简介及生成数字实战
  20. python bitwise operator 位运算

热门文章

  1. Reloaded(重启)
  2. 20190配电网设备标准化设计 0.4KV低压开关柜中 综合监测装置要求
  3. android定时提醒功能,Android后台定时提醒功能实现
  4. MYIE2拖拽搜索中文关键词google乱码的解决方法
  5. UIStoryboardSegue(多控制器)
  6. ORACLE存储过程详解----我看过最详细的存储过程
  7. 餐饮收银管理系统如何连接mysql_基于jsp+mysql+Spring+mybatis的SSM餐厅点餐收银管理系统...
  8. 2022.12.5最新省市区json字符串
  9. OneThousand - 去中心化的抽奖
  10. 【计算机视觉的修炼秘笈】深度好文,持续更新