总结一下最近包括之前遇到的一些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一些常见需求(陆续补充)的更多相关文章

  1. Java发送邮件,所遇到的常见需求

    明天要做关于发送邮件的接口,虽然我之前已用Java Mail做过许多关于邮件的发送.但同事说有点难点,虽我还不知难点在哪,还是要复习下.凡事预则立,不预则废嘛~ 所需的包: Java Mail : 目 ...

  2. 圆形头像以及一些常见需求形状自定义ImageView组件

    在实际开发中,我们经常会遇到这样的需求,就是无论图片长啥样,我们都要其显示成圆形.圆形加一个边框.矩形加边框,带圆角的矩形等等,lib和demo下载地址:https://github.com/mapl ...

  3. 几行实现圆形头像,以及一些常见需求形状自定义ImageView组件

    在实际开发中,我们经常会遇到这样的需求,就是无论图片长啥样,我们都要其显示成圆形.圆形加一个边框.矩形加边框,带圆角的矩形等等,我已把自己平常用的组件和demo上传到了github(https://g ...

  4. geo常见需求

    常见的地理位置相关需求有: 1.查找附近的人 2.显示两点距离 3.点是否在指定范围内(地理围栏) redis.MongoDB.mysql都已支持geo 几种geo方案对比 https://blog. ...

  5. 在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. ...

  6. c 有关N!阶乘的相关问题----陆续补充上来

    第一个:求N!结果中末尾0的个数问题.思路是末尾0的产生   5*偶数,阶乘中偶数的个数肯定比5多,所以求出阶乘中5的个数就可以求出末尾0的个数. #include<stdio.h> in ...

  7. [js]js杂项陆续补充中...

    hasOwnProperty判断对象是否有这个属性 p = { 'name': 'maotai', 'age': 22 }; console.log(p.hasOwnProperty('names') ...

  8. vue项目常见需求(项目实战笔记)

    一.起步 1.引入reset.css解决手机之间不同分辨率的问题(reset.css为别人封装的css文件) import './assets/styles/reset.css' 使用方式 1rem= ...

  9. WebGL编程指南高级技术篇(常见需求的处理)

    一.鼠标控制模型旋转 实质的根据鼠标移动前后的位置比较得出x,y轴的旋转角度: 图中是一个屏幕,有一个模型(恩,他是一个模型),鼠标由P点移动到P1点,我们假定移动单位步长旋转β角度: P(x1,y1 ...

随机推荐

  1. Spring中Quartz的配置及corn表达式

    Quartz可以用来执行任务调度功能,如间隔一定时间调用执行任务.用起来还是蛮方便的.只要将你要调用的类配置到Spring配置文件即可. 在Spring的配置文件中配置Quartz. <!-- ...

  2. Composer - windows下安装方法

    在windows下安装的方法 方法一:使用安装程序 这是将 Composer 安装在你机器上的最简单的方法. 下载并且运行 Composer-Setup.exe,它将安装最新版本的 Composer ...

  3. 重拾Python(2):如何安装第三方库(Windows)

    使用python进行数据分析或者数据处理时,往往需要使用一些库,而使用库之前必须安装它.Anaconda内置了很多常用的第三方库,可以满足绝大部分需求,比如numpy.pandas.matplotli ...

  4. 2018-02-03-jekyll框架下的post如何显示图片

    layout: post title: 2018-02-03-jekyll框架下的post如何显示图片 key: 20180203 tags: blog post modify_date: 2018- ...

  5. 图像映射<map>、<area>

    1.<map>定义图像映射,图像映射(image-map)指带有可单击区域的一幅图像. 2.<area>定义图像映射中的区域,area元素永远嵌套在map元素内部,area元素 ...

  6. NodeJs实现他人项目实例

    1.简单实例,参考 https://github.com/alsotang/node-lessons/tree/master/lesson2 2.express一个新项目 ,但出现警告 发现少了nod ...

  7. Sql Server的艺术(三) SQL聚合函数的应用

    SQL提供的聚合函数有求和,最大值,最小值,平均值,计数函数等. 聚合函数及其功能: 函数名称 函数功能 SUM() 返回选取结果集中所有值的总和 MAX() 返回选取结果集中所有值的最大值 MIN( ...

  8. java之过滤器Filter (应用场景)

    filter在开发中的常见应用:     * 1.filter可以目标资源执行之前,进行权限检查,检查用户有无权限,如有权限则放行,如没有,则拒绝访问     * 2.filter可以放行之前,对re ...

  9. jQuery的属性,事件及操作

    1.属性操作 1.1 基本属性操作 $("img").attr("src") 返回文档中所有图像的src属性值 $("img").attr( ...

  10. STP协议

    STP协议的作用: 第一, 可以避免网络环路和广播风暴. 二层数据包是没有TTL(time to live)的,如果不加以限制,可能会无限的传播下去.二层设备间如果存在环路,大量的广播包就可能导致广播 ...