Pymongo一些常见需求(陆续补充)
总结一下最近包括之前遇到的一些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里边都包含这个参数,现在贴一下源码。


可以看到源码里的解释是,如果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})
Pymongo一些常见需求(陆续补充)的更多相关文章
- Java发送邮件,所遇到的常见需求
明天要做关于发送邮件的接口,虽然我之前已用Java Mail做过许多关于邮件的发送.但同事说有点难点,虽我还不知难点在哪,还是要复习下.凡事预则立,不预则废嘛~ 所需的包: Java Mail : 目 ...
- 圆形头像以及一些常见需求形状自定义ImageView组件
在实际开发中,我们经常会遇到这样的需求,就是无论图片长啥样,我们都要其显示成圆形.圆形加一个边框.矩形加边框,带圆角的矩形等等,lib和demo下载地址:https://github.com/mapl ...
- 几行实现圆形头像,以及一些常见需求形状自定义ImageView组件
在实际开发中,我们经常会遇到这样的需求,就是无论图片长啥样,我们都要其显示成圆形.圆形加一个边框.矩形加边框,带圆角的矩形等等,我已把自己平常用的组件和demo上传到了github(https://g ...
- geo常见需求
常见的地理位置相关需求有: 1.查找附近的人 2.显示两点距离 3.点是否在指定范围内(地理围栏) redis.MongoDB.mysql都已支持geo 几种geo方案对比 https://blog. ...
- 在Ubuntu16.04集群上手工部署Kubernetes(未完,陆续补充中)
主机信息 主机 IP OS k8s-master 10.10.10.20192.168.0.20 Ubuntu Server 16.04 k8s-node1 10.10.10.21192.168.0. ...
- c 有关N!阶乘的相关问题----陆续补充上来
第一个:求N!结果中末尾0的个数问题.思路是末尾0的产生 5*偶数,阶乘中偶数的个数肯定比5多,所以求出阶乘中5的个数就可以求出末尾0的个数. #include<stdio.h> in ...
- [js]js杂项陆续补充中...
hasOwnProperty判断对象是否有这个属性 p = { 'name': 'maotai', 'age': 22 }; console.log(p.hasOwnProperty('names') ...
- vue项目常见需求(项目实战笔记)
一.起步 1.引入reset.css解决手机之间不同分辨率的问题(reset.css为别人封装的css文件) import './assets/styles/reset.css' 使用方式 1rem= ...
- WebGL编程指南高级技术篇(常见需求的处理)
一.鼠标控制模型旋转 实质的根据鼠标移动前后的位置比较得出x,y轴的旋转角度: 图中是一个屏幕,有一个模型(恩,他是一个模型),鼠标由P点移动到P1点,我们假定移动单位步长旋转β角度: P(x1,y1 ...
随机推荐
- mavean的依赖传递和排除依赖
三个mavean项目 A .B. C 如果B依赖A(A先执行clean package命令) 那么B得pom.xml文件里面就写 <dependency> <groupId> ...
- android CheckBox与监听
<CheckBox android:id="@+id/cb1" android:layout_width="fill_parent" android ...
- SpringMVC实现PUT请求上传文件
在JQuery中,我们可以进行REST ful中delete和put的请求,但是在java EE标准中,默认只有在POST请求的时候,servlet 才会通过getparameter()方法取得请求体 ...
- JAVA并发编程学习笔记------锁顺序死锁
一.需求描述: 将资金从一个账户转移到另一个账户. 二.程序实现: (1)账户类: public class Account { private long account; public Accoun ...
- 02_Python基本数据类型
一.什么是数据 数据是描述客观事物的字符(比如95,不同的语义可表示成绩或体重),是计算机可以操作的对象,能够被计算机识别并输入给计算机处理的符号集合. 数据不仅仅包含整形,还包括图像.音乐.视频等非 ...
- 弥补wxpython无背景图片缺陷
思路: 通过设置Panel的背景样式为wx.BG_STYLE_CUSTOM: self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM) 绑定Panel的背景事情: sel ...
- ABP官方文档翻译 4.4 授权
授权 介绍 关于IPermissionChecker 定义权限 检查权限 使用AbpAuthorize特性 AbpAuthorize特性注意点 抑制授权 使用IPermissionChecker 在R ...
- Linux下查看CPU、内存和硬盘信息命令
一.查看cpu信息 cat /proc/cpuinfo 相同physical id 的记录是属于同一个CPU的,对应于多核的信息. 二.查看内存的信息 cat /proc/meminfo 三.查看硬盘 ...
- HashMap实现分析
HashMap最基本的实现思想如下图所示,使用数组加链表的组合形式来完成数据的存储. Entry在数组中的位置是由key的hashcode决定的. 向一个数组长度为16,负载因子为0.75的HashM ...
- js中定义对象的几种方式
转载:http://blog.sina.com.cn/s/blog_60f632050100wz7h.html (1)基于已有对象的扩充方法:适用于临时构建对象,弊端:每次构建对象都要新建一个. va ...