在Mongodb中,如何检查所有文档对于某个值是否唯一?

问题描述:

比方说,我在数据库中有4个文件:在Mongodb中,如何检查所有文档对于某个值是否唯一?

{ name: 'alex' } 
{ name: 'jen' } 
{ name: 'alex' } 
{ name: 'john'} 

在MongoDB中壳,我想知道,如果2个或更多的文档共享相同的“名称”

基本上,如果所有名称都不相同,则返回true。 如果2或人名称相同,则返回false。

试试这个,使用快速map-reduce query找到具有相同名称的文件数量,如果他们都不同返回true:

function allDifferent() { 
    var m = function() { emit(this.name, 1); } 
    var r = function(key, emits) { 
     var n = 0; emits.forEach(function(v) { n += v; }); return n; 
    } 
    var result = db.mycol.mapReduce(m, r, { out: "namecounts" }); 
    var allDifferent= (db.namecounts.count({ value: { $gt: 1 } }) == 0) 
    db.namecounts.drop(); 
    return allDifferent; 
}