2016-06-01 2 views
1

Я хотел был бы изменить мою базу данных от SQLite к MongoDB, так как mongo - схема меньше. В SQL-базе данных мне приходилось создавать несколько строк для каждого атрибута для одного и того же sku (продукта). Я должен создать n количество столбцов, так как каждый атрибут имеет разные спецификации. Теперь в mongo я планирую создать только один документ (ряд) для sku с тем же идентификатором. Для этого я хотел бы создать поле (столбец) для таких спецификаций, как html, pdf, description и т. Д. Теперь последнее поле относится к атрибутам, которые имеют разные значения. Я хотел бы сохранить его в хэш (пары ключевых значений). Имеет ли смысл хранить все атрибуты в одной ячейке? Я иду в правильном направлении? Кто-то, пожалуйста, предложите.Создание полей в MongoDB

EDIT: Я хочу что-то вроде этого.

sample file

Мой вопрос, в SQL я создавал столбцы для каждого атрибута, как атрибут 1 имя, значение и имя атрибута 2, значение. Это расширяет размер строки. Теперь я хочу сохранить все атрибуты в хэш-формате (как показано на рисунке), так как MongoDB меньше схемы. Является ли это возможным? И имеет ли это смысл? Есть ли лучший вариант?

+0

это будет здорово, если вы можете прикрепить мотивационный документ схема – profesor79

+0

Пожалуйста, найдите время, чтобы показать нам свою SQL-схему и предложенную схему Монго. Тогда мы в лучшем положении, чтобы помочь - помните, что мы не знаем ваш проект, как вы. – Hughzi

+0

@ Hughzi Спасибо. Да, пожалуйста, дайте мне немного времени. Я покажу тебе. – kelvin

ответ

0

В конечном счете, на то, как вы храните данные, должно влиять то, как вы собираетесь использовать или обновлять данные, но одним из способов было бы создать объект встроенных атрибутов в каждом sku/продукте со всеми атрибутами для этого sku/product:

Основываясь на вашем примере:

{ 
    "sku_id" : 14628109, 
    "product_name" : "TE Connectivity", 
    "attributes" : { 
     "Widhth" : [ "4", "mm" ], 
     "Height" : [ "56", "cm" ], 
     "Strain_Relief_Body_Orientation" : "straight", 
     "Minimum_Operating_Temperature" : [ "40" , "C" ] 
    } 
}, 
{ 
    "sku_id" : 14628110, 
    "product_name" : "Tuning Holder", 
    "attributes" : { 
     "Widhth" : [ "7", "mm" ], 
     "diametr" : [ "78", "cm" ], 
     "Strain_Relief_Body_Orientation" : "straight", 
     "Minimum_Operating_Temperature" : [ "4" , "C" ] 
    } 
}, 
{ 
    "sku_id" : 14628111, 
    "product_name" : "Facing Holder", 
    "attributes" : { 
     "size" : [ "56", "nos" ], 
     "Height" : [ "89", "cm" ], 
     "Strain_Relief_Body_Orientation" : "straight", 
     "Minimum_Operating_Temperature" : [ "56" , "C" ] 
    } 
} 
Смежные вопросы