对于像我这样的人,以后再看这个问题!
您可以通过将模型从 has_many 更改为 embeds_many(在 ruby 基本代码中)来做到这一点,然后使用我为自己编写的这个 javascript:
// Parent is parent model name without 's' and model is related model name without 's',
// if you have something with plural name this function don't work
// example : ref2em('user', 'post')
var ref2em = function(parent, model) {
var query, update;
// Search through all instances
db[parent+'s'].find().forEach(function(ref) {
query = {};
// Get all related models with parent_id
query[parent+"_id"] = ref._id;
db[model+'s'].find(query).forEach(function(em) {
// Update parent with $push operator (add model to parent's models attribute)
update = { $push: {} };
update['$push'][model+'s'] = em;
db[parent+'s'].update({_id: ref._id}, update);
});
});
}
然后使用这样的东西(将用户 has_many 帖子更新为用户 embeds_many 帖子):
ref2em('user', 'post')
(所有这些功能都只能在 mongo 控制台中使用,请确保您有备份并且您知道自己在做什么,阅读我写的评论并最后删除旧集合)。
没有保证,我只是分享我所做的(也许对你不起作用)。