如何对mongodb两个集合和集合内嵌套数组对象进行update更改?
背景:在nodejs中使用node-mongodb-native驱动mongodb
在一个数据库中有两个集合users和posts
想对着两个集合中的所有head进行更改如何操作?
具体结构如下:
集合user:
{
"_id" : ObjectId("58dcfb988f27d92bdcc49b90"),
"name" : "Ccccc",
"password" : "77f8a51b57ab51b6c7c8104f1699544b",
"head" : "/images/portrait-1491031350505.jpg"
}
集合posts:
{
"_id" : ObjectId("58dcfe048f27d92bdcc49b93"),
"name" : "Cccccc",
"head" : "/images/portrait-1490968786371.jpg",
"time" : "2017-3-30 20:45:56"
"title" : "发文章",
"post" : "这是正文部分",
"comments" : [
{
"name" : "Capricorn",
"head" : "/images/portrait-1490877344697.jpg",
"time" : "2017-3-30 20:46:6"
"comment" : "发表一下评论 么么哒",
},
{
"name" : "Capricorn",
"head" : "/images/portrait-1490877344697.jpg",
"time" : "2017-3-30 20:47:16"
"comment" : "头像?",
},
],
}
对users集合中的head对象、posts集合中的head对象以及comments数组中的head对象进行更改,该如何实现?
我现在是个新手 遇到这个问题已经两天了,不知从何下手
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
求人不如求己么? 终于解决了 贴出来,供大家参考
你的意思是如果用户修改了头像,需要把post里面这个用户的头像也改了
你上面的模式感觉不适合这种场景;不如post里面中保存用户id,comments里面也保存用户的id,这样就不用一个用户的信息改了,需要在多个地方也修改相应的信息,当然这种方式需要你在比如查询comments信息的时候,需要再获取用户的信息,需要你自己取舍了
更新的话,
db.posts.update({userId:'xxxxxx'},{$set:{"head" : "/images/portrait-1490968786371.jpg"}})//类似这样子的
mongodb不是关系型数据库,没办法用一条SQL语句搞定,只能用嵌套查询来做,对用惯了关系型数据库的人来说,简直无法直视。还有看到那一堆 if (err) { mongodb.close(); callback(err);}更要抓狂