wake-up-neo.com

JSON aus einer Datenbank speichern und abfragen

Ich habe von MongoDB gehört, bin aber nicht sicher, ob ich das Konzept vollständig verstehe. 

Wenn ich mehrere JSON-Objekte in MongoDB gespeichert habe:

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

Wie kann ich alle JSON-Objekte mit age >= 12 abfragen?

35
Jakob

Verstehen Sie zunächst, dass JSON nur eine Serialisierungstechnik ist. An sich sollte diese Serialisierungsmethode wahrscheinlich nicht Ihr Persistenzmedium bestimmen. Wenn Sie Ihre Frage oberflächlich betrachten, scheint es, als suchten Sie nach einer typischen relationalen Speicherdatenbank, in der Sie SQL verwenden können, um auf flexible Weise Ihre Daten abzufragen.

Das Serialisieren/Deserialisieren von JSON-Daten zur Speicherung in oder zur Präsentation nach dem Abrufen aus einer solchen relationalen Datenbank ist in nahezu jeder Programmiersprache trivial.

Wenn Sie wirklich verschiedene Snippets von JSON-Dokumenten (oder anderen Dokumenten) speichern müssen, die nicht wirklich eine feste Struktur haben, werden Sie normalerweise nach NoSQL-Lösungen wie MongoDB suchen. Ein anderes mögliches Szenario für die Verwendung der bekannteren NoSQL-Datenbanken ist, wenn Sie mit riesigen Datenmengen zu tun haben und horizontal skalieren müssen (d. H. Die Daten sind so groß, dass Sie die Datenbank auf mehrere Server skalieren müssen). Viele NoSQL-Systeme machen dies viel einfacher als traditionelle relationale DBs. Natürlich müssen Sie in einem solchen Szenario diese Tools auf der Grundlage der Funktionen bewerten, die sie bieten, damit Sie Daten auf die für Ihre Anwendungsfälle äußerst nützliche Weise lesen, schreiben und abfragen können.

43
Mike Brant

Ab 5.7 hat MySQL jetzt den nativen JSON-Datentyp . Angenommen, Ihre Tabelle heißt students und die JSON-Spalte heißt student. In MySQL 5.7 kann Ihre Auswahl als geschrieben werden

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

MongoDB speichert Daten im BSON-Format, das JSON ähnelt. Sie können Daten im JSON-Format speichern und eine Abfrage für jedes Feld durchführen. Sie können sogar ein bestimmtes Feld indizieren, das für Hauptabfragen verwendet wird. 

Sie sind nicht auf MongoDB beschränkt. Wenn Sie Ihre Frage sehen, denke ich, dass der Document-Store Ihren Bedürfnissen entspricht. Sie lesen hier mehr: - http://en.wikipedia.org/wiki/Document-oriented_database

13
Manu Viswam

Wenn alle Ihre Objekte dieselben Felder haben (ID, Alter, Geschlecht usw.), sollten Sie die Objekte als Zeilen einer relationalen Datenbank (z. B. MySQL) speichern.

6
tskuzzy

Eine mongodb-Shell-Abfrage dafür könnte folgendermaßen aussehen:

db.people.find({"age": {gt:12 }});
1
charles ross

Eine Couchbase N1QL-Abfrage sieht folgendermaßen aus:

SELECT * FROM people WHERE age >= 12;

Siehe https://query.couchbase.com für weitere Details.

0
Keshav Murthy