数据结构是多层嵌套数组:

{"_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中,在多层嵌套数组中插入(更新)符合条件的元素相关推荐

  1. 【100个 Unity实用技能】| C# 中List 使用Exists方法判断是否存在符合条件的元素对象

    Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 . 包括游戏开发.美术.建筑.汽车设计.影视在内的所有创作者,借助 Unity 将创意 ...

  2. 递归求嵌套数组中最大值

    今早在 https://attachments.me/hirehack/public/computer.html 做题,有一题是 递归求嵌套数组中最大值: /* This challenge requ ...

  3. Android多层嵌套Fragment中调用系统相机拍照以及裁剪的相关问题解决

    多层嵌套Fragment中调用系统相机拍照.裁剪 最近公司项目有频繁使用相机拍照的需求,然后频繁的实际使用过程中遇到很多大大小小的坑,在此记录下. (ps.关于一些拍照后图片旋转.裁剪设置返回数据为t ...

  4. C++ 读取txt文件中数据并存入数组中

    #include<iostream> #include<iomanip> #include<fstream> using namespace std; int ma ...

  5. js查找数组中符合条件的元素

    js查找数组中符合条件元素的几种方法 一.利用for循环进行查找 let arr = [{name: 'zhangsan', age: 18},{name: 'lisi', age: 17},{nam ...

  6. php数组函数序列之array_unshift() 在数组开头插入一个或多个元素

    array_unshift() 函数在数组开头插入一个或多个元素.被加上的元素作为一个整体添加,这些元素在数组中的顺序和在参数中的顺序一样 array_unshift()定义和用法 array_uns ...

  7. 【转载】C#中List集合使用Exists方法判断是否存在符合条件的元素对象

    在C#的List集合操作中,有时候需要根据条件判断List集合中是否存在符合条件的元素对象,此时就可以使用List集合的扩展方法Exists方法来实现,Exists方法的签名为bool Exists( ...

  8. mongo更新数组字段_更新mongodb中嵌套数组中的几个字段(使用pymongo)

    我正在尝试更新数组内数组中的一些字段 示例文档如下:{ id: 987654321 tweets: [ { text: "RT @947FreshFM: A vigil will be he ...

  9. php简单网站源码包含数组_PHP无限分级阶梯递归数组排列 以及多层嵌套数组在网页中的解析源码...

    数组递归 PHP无限分级 将数组递归转化成阶梯型数组 数组中包含数组 使用更方便 查看也很方便,网上找的都不是很好,自己写的才是王道 简单的递归 没有什么特别之处  只是自己写的容易理解一点而已! 代 ...

最新文章

  1. GAN网络立功!36分钟,建起5亿光年的宇宙区域
  2. 【转】TCP的SEQ和ACK的生成
  3. 脑与认知科学2 脑神经电生理学上
  4. tkinter笔记:通过点击button 控制标签的显示 (莫烦python笔记)
  5. 力扣453.最小操作次数使数组元素相等
  6. OpenCASCADE Texture Mapping
  7. fantastical2语言设置_如何为iPhone定制Fantastical2以适应您的需求
  8. java 读写acr122u_使用ACR122U 从NTAG203Chip 读取数据
  9. 用c语言将学生系统插入音效,增加音效.cpp
  10. 把PDF/AZW/EPUB转成图片
  11. matlab 取矩阵上三角元素,MATLAB triu():提取上三角矩阵
  12. 红帽linux中文语言包,英文 RedHat AS5 中文语言包安装
  13. android开发利器--站在巨人肩膀上前行
  14. IP被反垃圾邮件组织列入SBL,发送邮件被退回的解决方法
  15. 综述:图像风格化算法最全盘点 | 内附大量扩展应用
  16. python 程序员专属情话_拿来就能用!Python 每天定时发送一句情话 | 原力计划
  17. 泛泰升级包下载工具Windows版介绍_下载_使用说明_编写原理[2014.3.24更新v0.3]
  18. 马尾神经损伤—腰突压迫神经
  19. linux安装mysql时使用临时密码登录不进去mysql: [Warning] Using a password on the command line interface can be insec
  20. 高中信息技术html语言,高中信息技术《Python语言》模块试卷

热门文章

  1. MongoDB工具Robo 3T连接副本集
  2. 西数硬盘linux,SMR硬盘可靠性不再是问题 西数神油ZoneFS系统纳入Linux中
  3. 听说你写sql很溜,一条sql查询语句是如何执行的?
  4. 使用Socket实现通信聊天室
  5. 攻防世界的杂项入门题之功夫再高也怕菜刀
  6. SpringBoot实战技能
  7. 程序控制(ISO14229系列之31服务)
  8. Ubuntu镜像下载以及导入VirtualBox
  9. 循环出来的文字添加顿号 ‘、’,最后一个不用加
  10. 【阿里聚安全·安全周刊】阿里安全潘多拉实验室完美越狱iOS11.2.1|Janus漏洞修改安卓app而不影响签名...