mongodb和pymongo中,在多层嵌套数组中插入(更新)符合条件的元素
数据结构是多层嵌套数组:
{"_id" : ObjectId("5de0c88a0f158bf0f60ff99a"),"province" : "陕西","cityAndData" : [{"city" : "西安","districtAndData" : [{"district" : "长安","dateTimeAndData" : []},{"district" : "临潼","dateTimeAndData" : []}]},{"city" : "咸阳","districtAndData" : [{"district" : "咸阳","dateTimeAndData" : []},{"district" : "三原","dateTimeAndData" : []}}]
}
需求:找出陕西省西安市长安区的dateTimeAndData属性中,插入一条数据 'mydata'
在mongodb shell中:
$[<identifier>]和arrayFilters配合起来使用,$[c]是占位符,意思是在cityAndData数组的元素中,找到满足arrayFilters中对应过滤条件的元素,参考mongodb-identifier,注意要求mongodb版本号3.6及以上。如下,就能将'mydata'插入到dateTimeAndData中
db.weather.update(
{'province':'陕西','cityAndData.city':'西安','cityAndData.districtAndData.district':'长安'},
{$push: {"cityAndData.$[c].districtAndData.$[d].dateTimeAndData":'mydata'}},
{arrayFilters:[{'c.city':'西安'},{'d.district':'长安'}],upsert:false})
在pymongo中:
update方法已经逐渐废弃了。最好用update_one或者update_many,取决于你想更新一条还是多条符合条件的记录
self.mycol.update_one(
dataUpdateQuery,
{'$push'{'cityAndData.$[c].districtAndData.$[d].dateTimeAndData': dateTimeAndData}},
upsert=False,
array_filters=[{'c.city':city},{'d.district':district}])
为了看清楚分了几行写,注意upsert=False,不要用“:”代替“=”;array_filters也是作为参数出现的,不要加“”
其实看看官网的api就一目了然了(参考pymongo-update_one):
mongodb和pymongo中,在多层嵌套数组中插入(更新)符合条件的元素相关推荐
- 【100个 Unity实用技能】| C# 中List 使用Exists方法判断是否存在符合条件的元素对象
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 . 包括游戏开发.美术.建筑.汽车设计.影视在内的所有创作者,借助 Unity 将创意 ...
- 递归求嵌套数组中最大值
今早在 https://attachments.me/hirehack/public/computer.html 做题,有一题是 递归求嵌套数组中最大值: /* This challenge requ ...
- Android多层嵌套Fragment中调用系统相机拍照以及裁剪的相关问题解决
多层嵌套Fragment中调用系统相机拍照.裁剪 最近公司项目有频繁使用相机拍照的需求,然后频繁的实际使用过程中遇到很多大大小小的坑,在此记录下. (ps.关于一些拍照后图片旋转.裁剪设置返回数据为t ...
- C++ 读取txt文件中数据并存入数组中
#include<iostream> #include<iomanip> #include<fstream> using namespace std; int ma ...
- js查找数组中符合条件的元素
js查找数组中符合条件元素的几种方法 一.利用for循环进行查找 let arr = [{name: 'zhangsan', age: 18},{name: 'lisi', age: 17},{nam ...
- php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
array_unshift() 函数在数组开头插入一个或多个元素.被加上的元素作为一个整体添加,这些元素在数组中的顺序和在参数中的顺序一样 array_unshift()定义和用法 array_uns ...
- 【转载】C#中List集合使用Exists方法判断是否存在符合条件的元素对象
在C#的List集合操作中,有时候需要根据条件判断List集合中是否存在符合条件的元素对象,此时就可以使用List集合的扩展方法Exists方法来实现,Exists方法的签名为bool Exists( ...
- mongo更新数组字段_更新mongodb中嵌套数组中的几个字段(使用pymongo)
我正在尝试更新数组内数组中的一些字段 示例文档如下:{ id: 987654321 tweets: [ { text: "RT @947FreshFM: A vigil will be he ...
- php简单网站源码包含数组_PHP无限分级阶梯递归数组排列 以及多层嵌套数组在网页中的解析源码...
数组递归 PHP无限分级 将数组递归转化成阶梯型数组 数组中包含数组 使用更方便 查看也很方便,网上找的都不是很好,自己写的才是王道 简单的递归 没有什么特别之处 只是自己写的容易理解一点而已! 代 ...
最新文章
- GAN网络立功!36分钟,建起5亿光年的宇宙区域
- 【转】TCP的SEQ和ACK的生成
- 脑与认知科学2 脑神经电生理学上
- tkinter笔记:通过点击button 控制标签的显示 (莫烦python笔记)
- 力扣453.最小操作次数使数组元素相等
- OpenCASCADE Texture Mapping
- fantastical2语言设置_如何为iPhone定制Fantastical2以适应您的需求
- java 读写acr122u_使用ACR122U 从NTAG203Chip 读取数据
- 用c语言将学生系统插入音效,增加音效.cpp
- 把PDF/AZW/EPUB转成图片
- matlab 取矩阵上三角元素,MATLAB triu():提取上三角矩阵
- 红帽linux中文语言包,英文 RedHat AS5 中文语言包安装
- android开发利器--站在巨人肩膀上前行
- IP被反垃圾邮件组织列入SBL,发送邮件被退回的解决方法
- 综述:图像风格化算法最全盘点 | 内附大量扩展应用
- python 程序员专属情话_拿来就能用!Python 每天定时发送一句情话 | 原力计划
- 泛泰升级包下载工具Windows版介绍_下载_使用说明_编写原理[2014.3.24更新v0.3]
- 马尾神经损伤—腰突压迫神经
- linux安装mysql时使用临时密码登录不进去mysql: [Warning] Using a password on the command line interface can be insec
- 高中信息技术html语言,高中信息技术《Python语言》模块试卷
热门文章
- MongoDB工具Robo 3T连接副本集
- 西数硬盘linux,SMR硬盘可靠性不再是问题 西数神油ZoneFS系统纳入Linux中
- 听说你写sql很溜,一条sql查询语句是如何执行的?
- 使用Socket实现通信聊天室
- 攻防世界的杂项入门题之功夫再高也怕菜刀
- SpringBoot实战技能
- 程序控制(ISO14229系列之31服务)
- Ubuntu镜像下载以及导入VirtualBox
- 循环出来的文字添加顿号 ‘、’,最后一个不用加
- 【阿里聚安全·安全周刊】阿里安全潘多拉实验室完美越狱iOS11.2.1|Janus漏洞修改安卓app而不影响签名...