我已经阅读并搜索了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”内容的一些,特定或所有元素?
关于该主题的任何资源也将受到高度赞赏。
答案 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查询允许您“到达”给定文档中的嵌套对象,并且还包括数组。