假设我有以下架构
t = {name: 'John', reviews: [{sid: 1, comment: 'Great', rating: 4}, {sid: 2, comment: 'Awesome', rating: 5}]}
db.teacher.save(t)
db.teacher.find()
现在,带有sid 2的学生将评分更新为4.是否有任何内置操作以原子方式执行此操作?目前,我检索整个文档,手动操作评论,然后$设置整个评论数组。它有效,但感觉有点沉重。我已经查看了所有的原子操作符,其中很多都是近在咫尺的,但从我看到的内容中,没有一个能完全按照我的要求进行操作。有什么我想念的吗?
答案 0 :(得分:1)
MongoDB和许多其他DBMS一样,实现了update命令:
db.teacher.update({'reviews.sid': 2}, {$set: {'reviews.$.rating': 4}}, false, true);
作为旁注,我经常向那些有SQL经验但刚刚开始使用Mongo的人推荐cheatsheet。 )
答案 1 :(得分:0)
是的,您可以使用$set直接更新所需的密钥,并使用dot notation引用该密钥。