ber*_*tie 11 mongodb spring-data
我试图"比较"2个集合之间的所有文档,这将仅返回true,如果只有2个集合中的所有文档完全相同.
我一直在搜索集合上的方法,但找不到可以做到这一点的方法.
我在mongo shell中尝试了类似这样的东西,但没有像我预期的那样工作:
db.test1 == db.test2
Run Code Online (Sandbox Code Playgroud)
要么
db.test1.to_json() == db.test2.to_json()
Run Code Online (Sandbox Code Playgroud)
无论如何,我还在java中使用spring-data mongodb.
请分享你的想法!谢谢.
Ale*_*tic 13
你可以尝试使用mongodb eval结合你的自定义equals函数,就像这样.
您的方法不起作用,因为在第一种情况下,您正在比较不同的对象引用.在第二种情况下,即使对于相同的对象,也无法保证to_json将生成相同的字符串.
相反,尝试这样的事情:
var compareCollections = function(){
db.test1.find().forEach(function(obj1){
db.test2.find({/*if you know some properties, you can put them here...if don't, leave this empty*/}).forEach(function(obj2){
var equals = function(o1, o2){
// here goes some compare code...modified from the SO link you have in the answer.
};
if(equals(ob1, obj2)){
// Do what you want to do
}
});
});
};
db.eval(compareCollections);
Run Code Online (Sandbox Code Playgroud)
使用db.eval,您可以确保在数据库服务器端执行代码,而无需将集合提取到客户端.
| 归档时间: |
|
| 查看次数: |
15915 次 |
| 最近记录: |