比较Mongo在两个集合上的差异

编程入门 行业动态 更新时间:2024-10-25 14:27:34
本文介绍了比较Mongo在两个集合上的差异的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有两个mongo集合,一个指向生产环境,另一个指向测试环境。

如何比较我的两个集合之间的差异?

我尝试将它们转储到bson,然后转换为json。但我不能只对它们执行简单的比较,因为排序可能会有所不同,并且json文件太大而无法排序。

推荐答案

在外壳程序中尝试以下操作,它将迭代集合中的每一项,并尝试根据ID匹配每个文档。

假设我们有两个集合db.col1和db.col2:

> db.col1.find() { "_id" : 1, "item" : 1 } { "_id" : 2, "item" : 2 } { "_id" : 3, "item" : 3 } { "_id" : 4, "item" : 4 } > db.col2.find() { "_id" : 1, "item" : 1 } { "_id" : 2, "item" : 2 } { "_id" : 3, "item" : 3 } { "_id" : 4, "item" : 4 }

然后我们可以创建一个Java脚本函数来比较两个集合

function compareCollection(col1, col2){ if(col1.count() !== col2.count()){ return false; } var same = true; var compared = col1.find().forEach(function(doc1){ var doc2 = col2.findOne({_id: doc1._id}); same = same && JSON.stringify(doc1)==JSON.stringify(doc2); }); return same; }

然后调用如下所示:

> compareCollection(db.col1, db.col2) true

如果我们有第三个集合db.col3

> db.col3.find() { "_id" : 1, "item" : 1 }

并比较这个

> compareCollection(db.col1, db.col3) false

我们会得到预期的结果。

如果我们还有第4个集合,该集合具有匹配的文档但数据不同db.col4

> db.col4.find() { "_id" : 1, "item" : 10 } { "_id" : 2, "item" : 2 } { "_id" : 3, "item" : 3 } { "_id" : 4, "item" : 4 }

这也将返回false

> compareCollection(db.col1, db.col4) false

更多推荐

比较Mongo在两个集合上的差异

本文发布于:2023-11-29 00:16:43,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1644529.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:差异   两个   Mongo

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!