T
T
TipoImya2020-09-02 12:45:22
JavaScript
TipoImya, 2020-09-02 12:45:22

Find the user id in all MongoDB documents, remove the user id from all documents, and put it in some specific one?

I need to search the database for all matches by user id, remove them from all documents, and add them to the one I need. How to do it? MongoDB.

Answer the question

In order to leave comments, you need to log in

1 answer(s)
A
Alexander, 2020-09-02
@TipoImya

there is a great method .mapReduce:

var map = function(){
   if(this.name) {
        emit(this.name, 1);
   }
}

var reduce = function(key, values){
    return Array.sum(values);
}

var res = db.collection.mapReduce(map, reduce, {out:{ inline : 1}}); // < //
db[res.result].find({value: {$gt: 1}}).sort({value: -1});

specifically, it's used to determine how many times a document contains a particular field - push that off of the code above and go for it.
gag

годом ранее я работал с MongoDB, и сделал для себя некоторый вывод: нужно использовать нормальные СУБД по типу MySQL.
с Mongo работать очень трудно, нужно больше прибегать к различным методам чистого джаваскрипта.
взгляните, как легко и просто можно найти дубликаты, используя обычный SQL-запрос:
SELECT
  `column_name`,
  COUNT(`column_name`) AS `count`
FROM
  `table`
GROUP BY
  `column_name`
HAVING 
  `count` > 1

а можно даже не использовать SQL-запрос, а просто указать ограничение UNIQUE для таблицы - оно не пропустит повторяющиеся значения.
и теперь сравните вышеприведённый SQL-запрос, и код для MongoDB - вывод очевиден.
я советую вам переосмыслить своё решение.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question