(MongoDB) Агрегировать (.out) значения перемещения в неправильные поля - PullRequest
1 голос
/ 18 июня 2020

Я фактически создаю панель веб-сайта с автозаполнением, используя express js & mongodb 4.2.7, и использую lat и lon, чтобы избежать использования api геокодирования.

Вот формат моей базы данных:

{
  "_id" : ObjectId("5eea03e9a7891b6d701df571"),
  "id_ban_position" : "ban-position-4c882de48d894fc49ed9be76f7631d6d",
  "id_ban_adresse" : "ban-housenumber-78a2651ce382476ca9c8c8fcbcbaa539",
  "cle_interop" : "01001_A028_5307",
  "id_ban_group" : "ban-group-37c7c3f2b61440b48bca7d8fad56055e",
  "id_fantoir" : "01001A028",
  "numero" : 5307,
  "suffixe" : "",
  "nom_voie" : "Lotissement les Lilas",
  "code_postal" : 1400,
  "nom_commune" : "L'Abergement-Clémenciat",
  "code_insee" : 1001,
  "nom_complementaire" : "",
  "x" : 848436.205131189,
  "y" : 6562595.33916435,
  "lon" : 4.923279,
  "lat" : 46.146903, 
  "typ_loc" : "parcel",
  "source" : "dgfip",
  "date_der_maj" : "2019-02-12"
}

как видите, у меня много полей, которые не нужны для моего веб-сайта, и, самое главное, мне не нужно получать по одной строке для каждого номера на улице , достаточно одного уникального названия улицы. Поэтому я решил подавить повторяющееся название улицы ('nom_vo ie') и название города ('nom_commune') с помощью следующих агрегатов:

db.Addresses.aggregate(
  [ {
    $group: {
      _id: {voie: "$nom_voie", commune: "$nom_commune"},
      doc: {$first: "$$ROOT"}
    }
  },
  {$replaceRoot: {newRoot: "$doc"}},
  {$out: 'UniqueIds'}
  ],
  {allowDiskUse: true }
);

Проблема в том, что это использование переместило много значений из одно поле в другое и сделало мою базу данных абсолютно непригодной для использования.

{
  "_id" : ObjectId("5eea03e9a7891b6d701df571"),
  "nom_voie" : "-",
  "code_postal" : 1400,
  "nom_commune" : "Lotissement les Lilas",
  "nom_complementaire" : "",
  "lon" : 6562595.33916435,
  "lat" : 848436.205131189, 
  "field19" : "dgfip",
  ...
}

Как видите, значение «nom_vo ie» теперь находится в «nom_commune», значение «x» находится в «lat ", и значение" y "находится в" lon "и, наконец, значение" nom_vo ie "теперь равно" - ", и я получил новые поля, заменяющие другие (" field19 "вместо" source ") ...

Я использую агрегат с неправильной опцией?

Я получил 47 миллионов записей, это создает какие-то проблемы?

Спасибо всем за ваше время, даже если вы просто читаете это!

РЕДАКТИРОВАТЬ:

После нескольких попыток и некоторого поиска я обнаружил, что именно агрегатная функция создает некоторые проблемы, но я до сих пор не понимаю, почему, если у кого-то есть подсказки , я только что отредактировал do c, чтобы он стал более понятным и читаемым! (Раньше я думал, что это $ неустановленная проблема в функции)

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