如下图这样的数据:

即文档中某个字段是一个数组,而每个数组元素又是一个对象,现在需求是对每个对象中的content字段值作情感分析后,把情感分析得到的结果增加到这个对象中去。

如上图中第1个元素,修改后的结果应该是这样的:

{
"like_count": 2,
"pubtime": "Tue Apr 03 09:50:01 +0800 2018",
"reply_count": 0,
"content": "掌声送你",
"sentiment": 0
}

也就是多了最后的那个sentment:0。情感分析的过程是另外的话题,这里只讲mongodb的更新语句。

假设实际中已经获取到了这个文档的url,则更新语句是这样子的:

db.collection.updateOne(
{"url": url},
{"$set": {"comments.0.sentiment": 0}},
{"upsert": true}
)

在python中使用pymongo的语句是这样的:

#
# 这里假设已经获得文档并保存在了doc变量中
# for idx, comment in enumerate(doc['comments']):
db.collection.update_one({'url': url},
{'$set': {'comments.%d.sentiment' % idx: cmt_sent}},
upsert=True)

要注意的是$set后面的'comments.%d.sentiment' % idx,其实也就是拼成comments.0.sentiment的格式

根据数组下标在MongoDB中修改数组元素的更多相关文章

  1. mongodb中对数组的操作命令

    mongodb中对数组的操作命令有$push.$ne.$addtoset.$pop.$pull ###addtoset会碰到的问题addtoset解释: 往数组里面加入数据,如果数组里已经存在,则不会 ...

  2. jquery中修改一个元素的值或内容

    jquery中修改一个元素的值或内容,比如数值增加可以使用这个方法取得原值并+1 $this.text(function(i,ot){return Number(ot)+1;});

  3. Vue方法中修改数组某一项元素而不能响应式更新

    <template> <div> <ul> <li v-for="(item, i) in ms" :key="i"& ...

  4. vue中修改数组,dom未更新的问题

    vue中我们会频繁操作各种数据,但有时候发现修改完数据以后,dom并未更新? 比如有一个数组对象: obj = [{'name': 'joy'},{'name': 'bowen'}] 我要循坏插入某个 ...

  5. golang中数组指针和指针数组当做函数参数如何修改数组中的值

    先理解:数组指针它的类型时指针,指针数组它的类型时数组 1. 数组指针当做函数的参数 package main import "fmt" func changeData(dataA ...

  6. 在thinkphp框架中使用后台传值过来的数组,在hightcart中使用数组

    js的数组是和php里面数组是不一样的,所以模板文件需要先接受,然后利用Js代码转化之后再使用,接受后台的数组有几种办法 1.后台传过来的json数组,利用Js是可以接受的,然后将json数据利用js ...

  7. 对象数组空指针异常说明——C#中使用对象数组必须分别为其开辟空间

    l  场景 定义一个学生类,包含字段(学号,姓名,语文成绩,数学成绩,英语成绩).属性(总成绩).三个方法分别为(求平均分.数学平均分.语文平均分). 要求:在main()方法中,定义一个学生类型的数 ...

  8. 在MongoDB中修改数据类型

    引言 本文主要讲解Mongodb的类型转换.包括:string转double, string转int, string转Date. 0. 出现类型不一致的原因 ES导入数据到Mongo后,会出现类型统一 ...

  9. python中修改列表元素的方法

    一.在for循环中直接更改列表中元素的值不会起作用: 如: l = list(range(10)[::2]) print (l) for n in l: n = 0 print (l) 运行结果: [ ...

随机推荐

  1. Git断点续传和离线增量更新的实现

    cnblogs官方支持Markdown写博客了,亲测一下. ____ 什么是Bundle文件 Bundle文件是在packfile文件的基础上增加了代码库的元信息.通俗的说bundle文件就是一个便携 ...

  2. Gradle Build速度加快终极方法(android studio)

    Android Studio用起来越来越顺手,但是却发现Build的速度实在不敢恭维,在google和度娘了几把(....)之后,大体就是分配更高的内存,步骤:Setting-->搜索gradl ...

  3. 【Oracle学习笔记-1】Win7下安装Oracle 10g

    源程序获取 从Oracle的官网上下载Oracle 10g: 10203_vista_w2k8_x86_production_db.zip:==>服务器(必须) 10203_vista_w2k8 ...

  4. ELK高可用搭建---Elasticsearch配置(1)

    ########################ElasticSearch#######################环境:192.168.125.200   elasticsearch+logst ...

  5. 中点Brehensam画线算法

    #include<stdio.h> #include<stdlib.h> #include"graphics.h" //函数声明 void MidBreha ...

  6. Logstash之一:入门介绍

    简介 Logstash是一个接收,处理,转发日志的工具.支持系统日志,webserver日志,错误日志,应用日志,总之包括所有可以抛出来的日志类型.怎么样听起来挺厉害的吧?在一个典型的使用场景下(EL ...

  7. ASP.NET Web Pages:WebGrid 帮助器

    ylbtech-.Net-ASP.NET Web Pages:WebGrid 帮助器 1.返回顶部 1. ASP.NET Web Pages - WebGrid 帮助器 WebGrid - 众多有用的 ...

  8. 1036 Boys vs Girls (25 分)

    1036 Boys vs Girls (25 分) This time you are asked to tell the difference between the lowest grade of ...

  9. TACACS+简单说明

    1 TACACS+概述 1.1 什么是TACACS+ TACACS+(Terminal Access Controller Access Control System,终端访问控制器控制系统协议)是在 ...

  10. CSS个人笔记

    1. CSS盒模型 1.1 控制元素尺寸属性 1.1.1 box-sizing: 改变元素应用的尺寸规则 当设置元素尺寸宽度为固定值时(eg: 100px), 其实是元素内容区域的宽度为100px, ...