Pymongo一些常见需求(陆续补充)

简介: 总结一下最近包括之前遇到的一些pymongo操作的问题。#需求1: 搜索文档数组里边是否存在某元素数据:data1 = { '_id': xxxxxxxxxxxxxx, 'dataList': [ 'apple', 'grape', 'banana']}data...

总结一下最近包括之前遇到的一些pymongo操作的问题。

#需求1: 搜索文档数组里边是否存在某元素

数据:

data1 = {
    '_id': xxxxxxxxxxxxxx,
    'dataList': [
    'apple',  'grape', 'banana'
]
}
data2 = {
    '_id': xxxxxxxxxxxxxx,
    'dataList': [
    'watermelon',  'mango'
]
}

关键字: $elemMatch

查询方法:

db.find({'$elemMatch': {'dataList': 'mango'}})

这样就可以找到水果数据列表里边mango所在的document了。

#需求2: 删除文档的某个字段的某些信息

数据:

data = {
    '_id': "xxxxxxxx"
    'userInfo': {"name": "Woody", "age": 24, "weight": 10}
}

现在我想删除userInfo里边的weight信息。

关键字: $unset

db.update({'_id': 'xxxxxxxx'}, {'$unset': {'userInfo.weight': 10}})

这样就可以删除掉userInfo里边的weight信息了,补充一点,userInfo和weight之间的连接用“.”来表示。

需求3: 更新一条数据,如果数据不存在则插入此数据


关键字: upsert参数置为True

在update, update_one, update_many里边都包含这个参数,现在贴一下源码。

Paste_Image.png

Paste_Image.png

可以看到源码里的解释是,如果upsert参数为True,则会在没有找到文档的时候插入这条数据(此时是可以代替insert操作的)。

#需求4: 使用正则表达式查询文档里的文本

关键字: $regex

data = {
    '_id': "xxxxxxxx",
    'content': 'hello, this is a url for baidu, it is https://www.baidu.com'
}
db.find({"content": {"$regex": r"https://[\w\.]+"}})

#需求5: 过滤不需要的字段

关键字: projection参数

例如我想过滤掉id,我只要content和name字段

data = {
    '_id': "xxxxxxxx",
    'content': 'hello, this is a url for baidu, it is https://www.baidu.com',
    'name': '百度首页'
}
db.find({"content": {"$regex": r"https://[\w\.]+"}}, projection={'_id':0, 'name':1, 'content':1})

相关文章
|
3月前
|
数据挖掘 数据库 开发者
Python 与 adb 库表的 3000 条之限,究竟隐藏着怎样的秘密?快来一探究竟!
【8月更文挑战第22天】《Python 读取 adb 库表 3K 限制探讨》介绍了一个常见问题:当用 Python 从 adb 库表读取大量数据时,遇到 3000 条记录的限制。文章分析了这一限制的原因及影响,并提出了两种解决策略:一是采用分批读取数据的方法,通过循环逐步提取所有数据;二是优化查询语句,提升查询效率。通过这些技巧,开发者能够有效应对这一挑战,确保项目的顺利进行。
41 2
|
2月前
|
SQL 关系型数据库 数据库
七天.NET 8操作SQLite入门到实战详细教程(选型、开发、发布、部署)
七天.NET 8操作SQLite入门到实战详细教程(选型、开发、发布、部署)
|
6月前
|
SQL 关系型数据库 Go
《Go 简易速速上手小册》第9章:数据库交互(2024 最新版)(上)
《Go 简易速速上手小册》第9章:数据库交互(2024 最新版)
39 0
|
6月前
|
存储 SQL Go
《Go 简易速速上手小册》第9章:数据库交互(2024 最新版)(下)
《Go 简易速速上手小册》第9章:数据库交互(2024 最新版)
57 0
|
6月前
|
开发框架 .NET API
七天.NET 8操作SQLite入门到实战 - 第四天EasySQLite前后端项目框架搭建
七天.NET 8操作SQLite入门到实战 - 第四天EasySQLite前后端项目框架搭建
|
测试技术 Python
【实测】django平台启动某脚本时的引入问题 (一期自动化平台的同学必看!)
【实测】django平台启动某脚本时的引入问题 (一期自动化平台的同学必看!)
|
机器人
3DCAT v2.1.3新版本发布,这三大功能更新你不容错过!
3DCAT实时渲染云在近期发布了新的公有云v2.1.3的版本,本次主要更新了应用页的三项功能「语音交互设置」、「多点触控」、「音频信号位深」
3DCAT v2.1.3新版本发布,这三大功能更新你不容错过!
|
算法 IDE 开发工具
Airtest更新:1.1.9版本来袭~
Airtest更新:1.1.9版本来袭~
251 0
|
开发框架 Prometheus 监控
《快来为你的.NET应用加个监控吧!》更新版本啦
《快来为你的.NET应用加个监控吧!》更新版本啦
266 0
《快来为你的.NET应用加个监控吧!》更新版本啦
下一篇
无影云桌面