2012-02-28 3 views
1

Так, может быть, я понял, что-то не так, потому что я из SQL мира: У меня есть коллекция с товарами:MongoDB динамические значения

_id: "0234weasq43rq", 
title: "Panasonic", 
descr: "blah blah", 
price: 132, 
specifications { 
    weight: 135, 
    color: "black", 
    type: "LCD", 
    diagonal: 50 
} 

_id: "0234weasq43rq", 
title: "Samsung Galaxy Tab", 
descr: "blah blah", 
price: 132, 
specifications { 
    weight: 135, 
    color: "white", 
    standard: "GSM", 
    wifi: "Yes" 
} 

Могу ли я иметь различные характеристики для разных категорий товаров (например, телефоны и компьютеры)? Есть ли проблемы с поиском товаров с использованием запроса, например goods.find(specifications { diagonal: 50 }), если не все товары имеют «диагональную» спецификацию?

Спасибо!

ответ

2

Да, ваши документы, даже в том же собрании, могут иметь совершенно разные структуры. В вашем примере запрос будет возвращать только товары с диагональю = 50 и опустить какие-либо документы, которые не имеют диагонали (или они определены, но это не 50, очевидно)

+0

Хорошо, еще один вопрос: могу ли я использовать больше или меньше операторов для этого примера запроса (например: спецификации {диагональ: {$ gt: 3}})? –

+1

да, вы можете. вы можете проверить все это в оболочке mongo. он довольно прост в использовании. – Eduardo

1

Могу ли я хранить разные спецификации для разных категорий товаров (например, телефоны и компьютеры)?

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

Есть ли какие-либо проблемы для нахождения товаров, используя запрос, как goods.find (спецификации {диагональные: 50}), если не все товары имеют «диагональ» спецификации?

Нет, абсолютно. Одна вещь, которая может быть полезна для вас, - это индексы sparse для полей, которые не представлены во всех документах (например, поле диагонали). Этот индекс не будет включать документы, которые не имеют этого поля.

Смежные вопросы