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