根據數組下標在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的格式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM