问题描述
问题解答
回答1:求人不如求己么? 终于解决了 贴出来,供大家参考
mongodb.open(function(err, db) {if (err) { return callback(err);}db.collection(’users’, function (err, collection) { if (err) {mongodb.close();callback(err); } db.collection(’posts’, function (err, collectionofposts) {if (err) { mongodb.close(); callback(err);} collection.update({'name': name}, {$set: {'head': head}}, function(err) {if (err) { return callback(err);}collectionofposts.update({'name': name}, {$set: {'head': head}}, {multi: true}, function(err) { if(err) {return callback(err); } collectionofposts.find().forEach( function(doc) {collectionofposts.update({_id: doc._id, 'comments.name': name},{$set: {'comments.$.head': head}}, {multi: true});}, function(err) { if(err) {return callback(err);} mongodb.close(); callback(null);}); });}); });}); });}回答2:
你的意思是如果用户修改了头像,需要把post里面这个用户的头像也改了
你上面的模式感觉不适合这种场景;不如post里面中保存用户id,comments里面也保存用户的id,这样就不用一个用户的信息改了,需要在多个地方也修改相应的信息,当然这种方式需要你在比如查询comments信息的时候,需要再获取用户的信息,需要你自己取舍了
更新的话,
db.posts.update({userId:’xxxxxx’},{$set:{'head' : '/images/portrait-1490968786371.jpg'}})//类似这样子的
回答3:mongodb不是关系型数据库,没办法用一条SQL语句搞定,只能用嵌套查询来做,对用惯了关系型数据库的人来说,简直无法直视。还有看到那一堆 if (err) { mongodb.close(); callback(err);}更要抓狂