В Mongodb, как я могу проверить, все ли документы уникальны для значения? - PullRequest
4 голосов
/ 18 августа 2011

Допустим, у меня есть 4 документа в базе данных:

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

В оболочке MongoDB я хочу знать, имеют ли 2 или более документов одинаковое имя .

Как правило, если все имена разные, верните true. Если 2 или люди имеют одинаковые имена, верните false.

1 Ответ

6 голосов
/ 18 августа 2011

Попробуйте, воспользуйтесь быстрым запросом уменьшения карты , чтобы найти количество документов с одинаковым именем, и вернет 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;
}
...