zoukankan      html  css  js  c++  java
  • 根据数组下标在MongoDB中修改数组元素

    如下图这样的数据:

    即文档中某个字段是一个数组,而每个数组元素又是一个对象,现在需求是对每个对象中的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的格式

  • 相关阅读:
    S32K142学习记录_day1
    dsPIC33EP单片机的PPS(外设引脚选择)
    零欧电阻
    MOS管的栅极和源极之间的电阻
    RDLC表格排序设置
    SQL相关
    使用sql的xmlpath可以把xml文件转化为表格
    Visual Studio2017 无法折叠
    使用图形化界面打包自己的类库
    初识NuGet及快速安装使用
  • 原文地址:https://www.cnblogs.com/wuzhiblog/p/mongodb_update_array_by_index.html
Copyright © 2011-2022 走看看