如下圖這樣的數據:
即文檔中某個字段是一個數組,而每個數組元素又是一個對象,現在需求是對每個對象中的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
的格式