我有以下网络/mongodb 设置:
1 个主要的 mongodb 数据库(
10.0.0.1
无法从 Internet 访问)- 包含集合 A 和集合 B 中的私人信息,其中包含由受信任用户创建的文档。在任何时候,用户都可以将集合 B 中的任何文档标记为“公共”,这会将其属性从 更改{'public':false}
为{'public':true}
。1 个公共 mongodb 数据库(
10.0.0.2
运行一个可通过反向代理从 Internet 访问的网络服务器)- 不包含集合 A,但应包含集合 B 中标记为“公共”的所有文档。这台机器将向外部用户提供这些公共文档网络。
我将如何设置 mongodb,以便当主数据库 ( 10.0.0.1
) 中的文档更新为 时{'public':true}
,它会被复制到公共 mongodb 数据库 ( 10.0.0.2
)?
其他详情:
- 我正在使用 PHP 驱动程序
- 文档很小,最大 2KB
- 这些服务器上的负载可能永远不会超过 10 个并发用户
- 最终的一致性是可以的,最多几分钟,但我想知道我的选择是什么。
所以,重申一下,这里有一个用例:
John VPN 进入我们的专用网络,打开
http://10.0.0.1/
,创建一个文档(称之为D2
),将其标记为私有。然后,约翰查看了一个较旧的文档,D1
并决定通过单击“公开”按钮将其公开。服务器自动使文档在公共服务器上可用example.com
(公共 IPx.y.z.w
,内部 IP10.0.0.2
)。约翰给莎拉发了一封电子邮件,要求她阅读文档 D1(公开的那个)。莎拉去
http://example.com
并且能够阅读D1
,但从未见过D2
。
我的目标是实现这一点,而无需手动编写脚本来同步这两个数据库。我怀疑这应该是可能的,但我无法从我读过的关于 MongoDB 复制的内容中弄清楚。
我欢迎任何建议。
谢谢!