问题描述
参见mongoose
两集合schema如下:
var personSchema = Schema({ _id : Number, name : String, age : Number, stories : [{ type: Schema.Types.ObjectId, ref: ’Story’ }]});var storySchema = Schema({ _creator : { type: Number, ref: ’Person’ }, title : String, fans : [{ type: Number, ref: ’Person’ }]});
当fans中的一个person取消了对story的喜好(fans的理解不知道对不对)那么story.fans是数组,可以delete掉该person的数据这个感觉还比较容易update
如果一个person的story不正确,同时story集合中并不存在该person的正确story;那么是remove该person的field:stories吗?还是能够将该person的field:stories这个ObjectId类置空?
希望各位能够提供一些建议?
问题解答
回答1:如果我理解正确的话,如何处理需要依据应用的需求。
不过,你假设的第二种情形,如果populate正常的话,通常是不会出现的。
供参考。
回答2:关注的时候添加 Stroy 到 Person ($addToSet去重, $push)
Person.update({ _id: persionId}, { $addToSet : { stories: storyId }}, function(err, raw)
添加 fans $addToSet(去重), $push(不去重)
Story.update({_id: storyId }, { $addToSet : { fans: persionId } }, function(err, raw)取消关注
删除 Person ($pull)
Person.update({ _id: persionId}, { $pull : { stories: storyId }}, function(err, raw)
删除 fans ($pull)
Story.update({_id: storyId }, { $pull : { fans: persionId } }, function(err, raw)