поиск дубликатов с помощью карты уменьшить от mongodb - PullRequest
1 голос
/ 21 августа 2011

Мне нужно найти дубликаты в коллекции в mongo db, которая содержит около 20000 документов. Результат должен дать мне ключ (по которому я группирую) и количество раз, которое они повторяются, только если число больше 1. Ниже приведено неполное описание, однако оно также выдает ошибку, когда я бегу в монго. exe shell:

db.runCommand({ mapreduce: users, 
 map : function Map() {
                emit(this.emailId, 1); 
}
reduce : function Reduce(key, vals) {
                return Array.sum(vals);

}
finalize : function Finalize(key, reduced) {
                return reduced
}
out : { inline : 1 }
});

Синтаксическая ошибка: отсутствует} после списка свойств (оболочка): 5

почему появляется вышеупомянутая ошибка? как получить только те, у которых число больше 1?

1 Ответ

1 голос
/ 21 августа 2011

Я не уверен, является ли это точной копией введенного вами кода, но похоже, что вы пропускаете запятые между полями в объекте, передаваемом в runCommand.Попробуйте:

db.runCommand({ mapreduce: users, 
    map : function Map() {
        emit(this.emailId, 1); 
    },
    reduce : function Reduce(key, vals) {
        return Array.sum(vals);
    },
    finalize : function Finalize(key, reduced) {
        return reduced
    },
    out : { inline : 1 }
});

Также обратите внимание, что даже при использовании finalize невозможно фактически удалить записи из выведенного документа (или коллекции) за один проход с помощью Map-Reduce.Однако, независимо от того, используете ли вы out: {inline: 1} или out: "some_collection", отфильтровать результаты с количеством, равным 1.

, довольно тривиально.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...