Как перейти из электронной таблицы в базу данных MongoDB (экспорт и модель) - PullRequest
0 голосов
/ 10 марта 2012

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

Хотя я много читал, у меня все еще есть небольшие проблемы с полным пониманием модели.Я надеюсь, что смогу получить небольшую помощь.

В основе моего проекта у меня есть продукты, я получил их в формате электронных таблиц.Вот как это выглядит:

enter image description here

Есть гораздо больше брендов, категорий и типов.

Теперь я думал о чем-то вроде этого, в значительной степениКак я могу моделировать MySQL DB:

brands = {
    id : ...,
    name : ...,
}

categories = {
    id : ...,
    brand_id : ...,
    name : ...
}

types = {
    id : ...,
    category_id : ...,
    name : ...
}

products = {
    id : ...,
    type_id : ...,
    code : ...,
    unit : ...,
    name : ...,
    price : ...
}

Правильная модель?

Мне было интересно, если это лучший способ смоделировать это.Со временем БД будет расширена за счет заказов, запасов и т. Д.

Как экспортировать это?

Другой вопрос - как экспортировать это в mongodb.Я настроил сервер и настроил Rock Mongo на интерфейс, похожий на phpmysql.Я не нашел хороших методов импорта / экспорта, хотя.

Ответы [ 3 ]

1 голос
/ 05 января 2013

Я бы предложил взглянуть на Google Docs Spreadsheet и MongoDB. Поскольку их API программирования - Javascript / JSON, я бы предложил попробовать.

Вы можете написать простой API-оболочку для MongoDB, чтобы напрямую представлять данные JSON. Затем импортировать его в Google Docs очень просто. Посмотрите, как компания MongoLab сделала это: https://support.mongolab.com/entries/20433053-rest-api-for-mongodb

Существует множество интерфейсов API REST, доступных по адресу: http://www.mongodb.org/display/DOCS/Http+Interface#HttpInterface-RESTInterfaces

Вот простой код с использованием Google Script в Google Docs Spreadsheet:

function readRows() {
  var sheet = SpreadsheetApp.getActiveSheet();

  // query
  var q = {
    "field": "value"
  };

  var qStr = encodeURIComponent(JSON.stringify(q));

  var url = "https://api.mongolab.com/api/1/databases/xxxx/collections/eeeee?q=" + qStr  + "&s=&f=&view=json&apiKey=abababababababababab";

  var jsondata = UrlFetchApp.fetch(url);
  var object   = JSON.parse(jsondata.getContentText());

  var outArr = [];

  for (var i = 0; i < object.length; i++) {
    var item = object[i];

    var cols = [];
    cols[0] = new Date(item['someDateObject']['$date']);
    cols[1] = item['brandName'];
    cols[2] = item['productName'];
    outArr.push(cols);
  }

  Logger.info(outArr);
  sheet.getRange(1, 2, outArr.length, outArr[0].length).setValues(outArr);
};
1 голос
/ 10 марта 2012

Я думаю, что одна ошибка, которую вы делаете, это попытка нормализовать ваши данные.Mongodb - это все о денормализованных данных, поэтому объединения не нужны.

0 голосов
/ 13 марта 2019

Я только что опубликовал статью о том, как именно выполнить эту интеграцию. https://blog.mlynn.org/stitching-sheets/ В этой статье рассказывается о создании простого скрипта Google App, который экспортирует данные через объекты JSON в базу данных MongoDB с использованием MongoDB Stitch. Ссылки на GitHub репо и Gists находятся в статье блога. Надеюсь, это поможет.

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