2015-06-24 2 views
0

сравнение следующих 2 документов, структура которых лучше? Свойство «значение» обычно является идентификатором другого документа в другой коллекции. Должен ли я вообще избегать использования 1-й структуры?mongodb структура документа. Значение как имя свойства?

{ $type : $value } 

где имя свойства типа может иметь различные формы. 2 пример документы будут:

doc 1: { "foo" : "id1"} 
doc 2: { "bar" : "id2"} 

или { "тип": $ типа, значение: $ значение} и exmaples:

doc 1: { type: "foo", value: "id1" } 
doc 2: { type: "bar", value: "id2" } 

В 1-ом примере поискового запроса должен быть { " foo ": {$ exists: true}} while in 2nd {type:" foo "} выглядит намного проще и гибко, потому что я могу легко сравнить с массивом {type {$ in: []}}

ответ

0

Ваш вторая структура

doc 1: { type: "foo", value: "id1" } 
doc 2: { type: "bar", value: "id2" } 

- правильный подход для определения документа. Рекомендуется не использовать динамические значения в качестве ключей в Mongo документе. Если вы используете динамические клавиши, сложно запросить такие ключи. При использовании выше заданной структуры, вы можете легко запрос с использованием type или value как следующее:

db.collection.find({"type":"foo"}) 

или

db.collection.find({"type":{"$in":["foo","abc"]}}) 
Смежные вопросы