2011-12-23 3 views
1

Я читал и искал конструкции JSON-BSON от MongoDB, но я не понимаю (не мог найти), как иметь вложенные данные и как их запрашивать.MongoDB: Структурные структуры данных зданий

То, что я хотел бы узнать это, если кто-то хочет сохранить массив в массиве, как в:

id: x, 
name: y, 
other: z, 
multipleArray: [ 
(lab1: A, lab2: B, lab3:C), 
(lab1: AB, lab2: BB, lab3:CB) 
(lab1: AC, lab2: BC, lab3:CC) 
.. 
.. 
] 

Как хранить такие данные, а затем получить некоторые, конкретные или все элементы «multipleArray "содержание?

Любой ресурс по этому предмету также будет высоко оценен.

+1

в вашем примере, multipleArray не является массивом массивов. Его просто массив объектов. Вы уверены, что ваш ввод верен? – Manoj

+0

Привет, извините, что я недостаточно осведомлен. Какая разница между массивом массивов и массивом объектов в этом случае? Не могли бы вы объяснить? Спасибо. – Phil

ответ

4

У Брайана был отличный совет, который вы должны прислушаться.

Также, как сказал Маной, у вас на самом деле есть массив объектов. Следующие может помочь вам немного ...

Списки только упорядоченные последовательности: [1,2,3...] или [2,292,111]

первым элементом в последнем примере 2, второй 292 ... списки/массивы обозначаются в квадратные скобки [ ]

объекты ключей карт до значений: { name: "Tyler", age: 26, fav_color: "green" }

название карты в «Тайлер», возраст карты до 25, и т.д ... и объекты обозначаются скобками { }

Документ в mongodb - это объект. Итак, как и выше, они сопоставляют ключи со значениями. Эти значения могут быть строками, числами, массивами ... или другими даже другими (вложенными) объектами)

Итак, давайте взглянем на ваш документ. У вас есть объект (документ), который имеет ключи id, name, other и multipleArray. Множество карт с множеством значений представляет собой массив [ ] объектов { }.

{ 
    id: x, 
    name: y, 
    other: z, 
    multipleArray: [ 
     {lab1: "A", lab2: "B", lab3:"C"}, 
     {lab1: "AB", lab2: "BB", lab3:"CB"}, 
     {lab1: "AC", lab2: "BC", lab3:"CC"} 
    ] 
} 

MongoDB есть эта функция называется multikeys, она в основном принимает значение, которое вы запрашиваете для и пытается сопоставить его с каждым значением в массиве.

Если вы хотите найти документ, в котором multipleArray содержащийся документ {lab1: "A", lab2: "B", lab3: "C"}, вы запрашиваете, как это: db.data.find({multipleArray: {lab1: "A", lab2: "B", lab3: "C"}})

Я предполагаю, что х, у и г определяются уже.

Есть больше тонкостей и сложностей, но если вы хотите узнать больше, прочитайте документацию на сайте mongodb here или получите книгу.

+0

Большое вам спасибо, я действительно очень ценю этот замечательный, простой и элегантный ответ. – Phil

1

Ваш вопрос немного обобщен и поэтому трудно дать хороший ответ.

При моделировании данных, которые нужно хранить и запрашивать с помощью MongoDB, вы должны подумать о том, как вы планируете фактически использовать и запрашивать свои данные. Основываясь на ответе на это, вы должны иметь хорошую структуру данных для хранения данных.

Было бы полезно ознакомиться с методами запросов MongoDB (http://www.mongodb.org/display/DOCS/Querying), чтобы вы могли понять множество способов запроса данных в MongoDB.

Независимо от того, какой язык вы используете, должна иметь хорошую библиотеку, которая должна абстрагироваться от деталей низкого уровня хранения и запросов данных, но по-прежнему важно знать, какие методы запросов поддерживает MongoDB.

В общем, запросы MongoDB позволяют вам «входить» в вложенные объекты в заданный документ, а также массивы.

+0

Спасибо за ссылку, это именно то, что я искал! – Aaron