mongoid/mongodb - 复制/复制记录
问题描述:
我正在构建一个cms,其中站点和页面存储在mongo中。我需要能够使用另一个网站作为模板创建一个新网站。mongoid/mongodb - 复制/复制记录
例如:
Site A - news page and home page
创建一个新的站点选择站点A为模板,这个选择网站A,然后使每一页网站A拥有的副本,并现场下保存它们乙
的结果
Site A - news page and home page
Site B - news page and home page
网站B将能够然后使用网站A作为起点建立那里新的网站。
我是新来的Mongo/mongoid所以真的想要一些关于最好的方式来处理这个问题的指针。
感谢
来组织数据
答
一种方法是使用集合与网站ID作为命名空间,给你喜欢收藏:
site_a.pages
site_a.news
site_a.users
site_b.pages
site_b.news
site_b.users
若要从现有的创建一个新的网站,你将复制相关集合(例如可能不包括.users
),更改名称空间。即,将site_a.pages
复制到site_c.pages
。 In the shell:
db.site_a.pages.find().forEach(function(x){db.site_c.pages.insert(x)});
注意site_a
不是数据库的名字,但the namespace of a collection。
如果您在云中为许多客户托管CMS,数据库中可能存在的集合数量可能会有限制。您可以通过为不同的客户提供不同的数据库来解决此问题。您应该阅读documentation on this了解更多详情。
另一种方法是将网站ID放入每个文档中,并始终在查询中过滤该网站ID。然后,你只会有几个集合,例如:
pages
news
users
用在具有site_id
场这些集合的文件:
{
"site_id": "site_a",
"page_title": "Homepage",
...
}
的复制将上述类似(但有过滤网及更新函数中的site_id
字段)。我认为集合的命名空间是一个更好的方法。
谢谢,我会给它一个阅读 – Alex