84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
1.帖子有内容有回复,如果在mongodb里只用1个表的话,可以设计成这样
{ title:'巴拉巴拉', content:'巴拉巴拉', comments:[ { user:123,//用户123的回复 content:'123' }, { user:456,//用户456的回复 content:'456' } ] }
这样的设计的话,如何修改 user:456 里的content?
1)是否用类似数组下标的方式?如:comments[1].content?如何写?
欢迎选择我的课程,让我们一起见证您的进步~~
如果你已经知道了{user: 456}的下标,可以用数组下标的方式改:
{user: 456}
db.coll.update({...}, {$set: {"comments.1.content": "567"}})
或者根据查询条件:
db.coll.update({"comments.user": 456}, {$set: {"comments.$.content": 567}})
其中$代表匹配上的数组元素。但这种方式只会修改第一个匹配数组元素。所以要注意你的条件必须要精确匹配到你想改的那个元素。以你的数据为例,如果这个用户评论过2次,这样写就有问题了。
$
如果你已经知道了
{user: 456}
的下标,可以用数组下标的方式改:或者根据查询条件:
其中
$
代表匹配上的数组元素。但这种方式只会修改第一个匹配数组元素。所以要注意你的条件必须要精确匹配到你想改的那个元素。以你的数据为例,如果这个用户评论过2次,这样写就有问题了。