MongoDB:构建复杂的数据结构

时间:2011-12-23 10:20:00

标签: mongodb

我已经阅读并搜索了MongoDB的JSON-BSON结构,但我不明白(也找不到)如何嵌套数据以及如何查询它。

我想学习的是,如果有人想将数组存储在数组中,如下所示:

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”内容的一些,特定或所有元素?

关于该主题的任何资源也将受到高度赞赏。

2 个答案:

答案 0 :(得分:4)

布莱恩有一些很好的建议你应该留意。

另外,正如Manoj所说,你实际拥有的是一系列物体。以下内容可能对您有所帮助...

列表只是有序序列:[1,2,3...][2,292,111]

最后一个例子中的第一个元素是2,第二个元素是292 ...列表/数组用方括号[ ]表示

对象将键映射到值:{ name: "Tyler", age: 26, fav_color: "green" }

名称映射到“Tyler”,年龄映射到25等等......对象用大括号{ }表示

mongodb中的文档是一个对象。因此,如上所述,它们将键映射到值。这些值可以是字符串,数字,数组......或其他甚至其他(嵌套)对象)

所以,让我们来看看你的文件。您有一个对象(文档)具有键ID,名称,其他和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"}})

我假设已经定义了x,y和z。

有更多细微之处和复杂性,但如果您想了解更多内容,请阅读mongodb网站here上的文档或获取图书。

答案 1 :(得分:1)

你的问题有点泛泛,因此很难给出一个好的答案。

在使用MongoDB对要存储和查询的数据进行建模时,您应该考虑如何计划实际使用和查询数据。根据答案,您应该能够提供一个良好的数据结构来存储数据。

熟悉MongoDB查询方法(http://www.mongodb.org/display/DOCS/Querying)对您有好处,这样您就可以了解在MongoDB中查询数据的多种方法。

您使用的任何语言都应该有一个很好的库,它应该抽象出存储和查询数据的低级细节,但是知道MongoDB支持哪些查询方法仍然很重要。

通常,MongoDB查询允许您“到达”给定文档中的嵌套对象,并且还包括数组。