首页  >  问答  >  正文

请教:mongodb帖子类表设计

1.帖子有内容有回复,如果在mongodb里只用1个表的话,可以设计成这样

{
    title:'巴拉巴拉',
    content:'巴拉巴拉',
    comments:[
        {
            user:123,//用户123的回复
            content:'123'
        },
        {
            user:456,//用户456的回复
            content:'456'
        }
    ]
}

这样的设计的话,如何修改 user:456 里的content?

1)是否用类似数组下标的方式?如:comments[1].content?如何写?
天蓬老师天蓬老师2749 天前568

全部回复(1)我来回复

  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-02 09:23:46

    如果你已经知道了{user: 456}的下标,可以用数组下标的方式改:

    db.coll.update({...}, {$set: {"comments.1.content": "567"}})

    或者根据查询条件:

    db.coll.update({"comments.user": 456}, {$set: {"comments.$.content": 567}})

    其中$代表匹配上的数组元素。但这种方式只会修改第一个匹配数组元素。所以要注意你的条件必须要精确匹配到你想改的那个元素。以你的数据为例,如果这个用户评论过2次,这样写就有问题了。

    回复
    0
  • 取消回复