我只是在寻找通常采用两个文件内容的shasum的最简单的等价物.我不想通过一个eval函数来比较每个项目,因为这篇文章建议:
如何比较2个mongodb集合?
Mongodb的Sharding/Replication功能必须已经为此内置了一个有效的方法,但是我没有看到关于如何为了比较而访问它的文档条目.
Mongodb的Sharding/Replication功能必须已经为此内置了一个有效的方法,但是我没有看到关于如何为了比较而访问它的文档条目.
复制依赖于幂等操作日志(oplog),不必计算集合上的校验和.MongoDB手册详细介绍了复制同步,包括初始同步和正在进行的复制行为.
有一个内部 dbHash命令使用分片来计算在数据库中的所有集合的MD5校验.它旨在验证分片集群配置数据库中集合的一致性,但可用于计算任何数据库的md5总和.
注意:该dbHash命令显然不是稳定的面向客户端的API的一部分,因此实现/ API可能会在MongoDB版本之间发生变化,恕不另行通知.
由于此命令会迭代所选数据库的所有集合中的所有文档,因此在大型数据库或生产数据库上运行时需要谨慎(特别是如果数据集大于RAM).读取大量文档可能导致临时从内存工作集中分页出有用的数据/索引.
命令输出类似于以下内容:
> db.runCommand('dbHash')
{
"numCollections": 2,
"host": "nibbler.local",
"collections": {
"foo1": "adf5db735ce0ac74c35a561675614676",
"foo2": "adf5db735ce0ac74c35a561675614676",
"foo3": "26e01a5da467064790a61108170a3b5c"
},
"md5": "f8f53a3cde773a61f5b4ccf4c3d99e07",
"timeMillis": 0,
"fromCache": [ ],
"ok": 1
}
Run Code Online (Sandbox Code Playgroud)
在这个例子中foo1,foo2集合具有相同的md5总和,但foo3不同.