从数据库中存储和查询JSON

我听说过MongoDB,但我不确定是否完全理解这个概念。

如果我有多个存储在MongoDB中的JSON对象:

[{"id": "peter", "age": "12", "gender": "male"}, {"id": "gemma", "age": "12", "gender": "female"}, {"id": "paul", "age": "13", "gender": "male"}] 

我将如何能够查询age >= 12所有JSON对象?

首先,了解JSON只是一个序列化技术。 本身,这个序列化方法可能不应该确定你的持久性媒介。 从表面上看你的问题,看起来你正在寻找的是一个典型的关系型存储数据库,你可以使用SQL来灵活地查询你的数据。

将JSON数据序列化/反序列化以便在从这样的关系数据库检索之后存储到或用于呈现在几乎任何编程语言中是微不足道的。

现在,如果您确实需要存储各种JSON文档(或任何其他types的文档)的片段,而这些片段实际上并没有固定的结构,那么您通常会开始查看NoSQLtypes的解决scheme(如MongoDB)。 使用更stream行的NoSQL数据库的另一种可能的情况是,当您处理大量数据并需要水平扩展时(即数据太大,需要跨多台服务器扩展数据库)。 许多NoSQL系统比传统的关系数据库要容易得多。 当然,在这种情况下,您需要根据它们提供的function来评估这些工具,以便以最有用的方式读取,写入和查询数据。

MongoDB以类似于JSON的BSON格式存储数据。 您可以以JSON格式存储数据,并可以在任何字段上进行查询。 您甚至可以在用于主要查询的特定字段上编制索引。

您不仅限于MongoDB,看到您的问题,我认为任何文档商店都可以满足您的需求。 你在这里阅读更多: – http://en.wikipedia.org/wiki/Document-oriented_database

从5.7开始,MySQL现在拥有原生的JSON数据types 。 假设你的表被称为students ,JSON列被称为student ,在MySQL 5.7中,你的select可以写成

 SELECT * FROM students WHERE JSON_EXTRACT(student, '$.age') = 12; 

如果所有的对象都有相同的字段(id,年龄,性别等),那么你应该将对象存储为一些关系数据库(例如MySQL)的行。