MongoDB: построение сложных структур данных - PullRequest
1 голос
/ 23 декабря 2011

Я читал и искал конструкции JSON-BSON 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)
..
..
]

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

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

Ответы [ 2 ]

4 голосов
/ 23 декабря 2011

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

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

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

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

Объекты сопоставляют ключи со значениями: { name: "Tyler", age: 26, fav_color: "green" }

имя сопоставляется с "Тайлером", возрастное сопоставление с 25 и т. д..и объекты обозначаются фигурными скобками { }

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

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

{
    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"}})

Я предполагаю x, yи z уже определены.

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

1 голос
/ 23 декабря 2011

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

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

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

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

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

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