Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

Die Find Abfrage orientiert sich an der Syntax des MongoDB Javascript Treibers (http://mongodb.github.io/node-mongodb-native/api-generated/collection.html#find). Es wird mindestens ein query Objekt benötigt. Optional kann man noch ein options Objekt angeben.

Codeblock
languagejs
themeEmacslanguagejs
{query}[, {options}]

Eine Besonderheit von Mongo Management Studio ist es, die Abfragen so schnell und einfach wie möglich einzugeben. Die folgenden Beispiel Abfragen Beispielabfragen beziehen sich auf die Collection zipcode aus dem Erste Schritte Tutorial.

Codeblock
language
languagejs
themeEmacsjs
// Suche nach allen Städten aus dem US-Bundesstaat Kalifornien (CA)
// alle Abfragen liefern das gleiche Ergebnis
 
// Standard MongoDB Abfrage
{state: "CA"}
 
// Wenn kein options Objekt vorhanden ist, können die geschweiften Klammern weggelassen werden
state: "CA"
 
// Man kann auch alles in Anführungszeichen schreiben
"state": "CA"
 
// Oder einfache Anführungszeichen verwenden
state: 'CA'

...

Natürlich lassen sich auf diese Art und Weise auch komplexere Abfragen gestalten.

Codeblock
languagejs
themeEmacs
languagejs
// Suche alle Städte aus dem US-Bundesstaat Alabama (AL) mit mehr als 40000 Einwohnern
 
// Standard MongoDB Abfrage
{
	state: "AL",
	pop: {
		$gt: 40000
	}
}
 
// verkürzte Abfrage
state: "AL", pop: {$gt: 40000}
 
// verkürzte Abfrage mit ohne Leerzeichen
state:"AL",pop:{$gt:40000}

Verwendung von Optionen

Codeblock
languagejs
themeEmacslanguagejs
// Suche alle Städte aus dem US-Bundesstaat Alabama (AL) mit mehr als 40000 Einwohnern und liefere in der Ergebnismenge nur die Städtenamen
{state: "AL", pop: {$gt: 40000}}, {fields: {city: 1}}

// Array Syntax
{state: "AL", pop: {$gt: 40000}}, {fields: ['city']}

// auch id Feld weglassen
{state: "AL", pop: {$gt: 40000}}, {fields: {city: 1, _id: 0}}
 
// Suche alle Städte aus dem US-Bundesstaat Alabama (AL) mit mehr als 10000 Einwohnern und sortiere aufsteigend nach Städtenamen
{state: "AL", pop: {$gt: 10000}}, {sort: {city: 1}}
 
// Suche alle Städte aus dem US-Bundesstaat Alabama (AL) mit mehr als 10000 Einwohnern und liefere 10 Datensätze und überspringe die ersten 20 Datensätze
{state: "AL", pop: {$gt: 10000}}, {limit: 10, skip: 20}

...

Hinweis

Soll in den Optionen mittels "$elemMatch" nach ObjectIds oder ISODates gesucht werden (siehe Beispiel), so muss der Konsolenmodus verwendet werden.

Codeblock
languagejs
themeEmacs
languagejs
{}, {fields: {match: {$elemMatch: {a: ObjectId("53ea1f663b6f20cc19001002")}}}}

...

Folgende Abfragen liefern jeweils das gleiche Ergebnis, wenn man nach einer bestimmten ObjectId sucht

Codeblock
languagejs
themeEmacs
languagejs
{_id: ObjectId('52bd27ebf370afe931001364')}
{_id: ObjectId("52bd27ebf370afe931001364")}
_id: ObjectId('52bd27ebf370afe931001364')
_id: ObjectId("52bd27ebf370afe931001364")
_id: "52bd27ebf370afe931001364"
_id: '52bd27ebf370afe931001364'
Hinweis

Mongo Management Studio erkennt Strings, die das Format einer MongoDB ObjectId haben und konvertiert dieses dann. Sollte es passieren, dass in einer Collection _ids als Strings gespeichert und diese MongoDB ObjectId konform sind, muss man für die Suchabfrage den Konsolenmodus verwenden. Ansonsten werden keine Daten gefunden.

Codeblock
languagejs
themeEmacslanguagejs
// finde Person mit id '52bd27ebf370afe931001364'
db.persons.find{_id: '52bd27ebf370afe931001364'}

...

Datumswerte müssen in einer bestimmten Syntax eingegeben werden, da diese nicht automatisch konvertiert werden können.

Codeblock
languagejs
themeEmacslanguagejs
// als ISO-String
start: ISODate('2013-08-02T08:20:38.993Z')
 
// als Datums-String
start: {$gte: {ISODate('dec 11, 1989')}}
start: {$gte: {ISODate("1989, 12, 11")}}
 
// als timestamp in ms
start: ISODate(629379488000)

...

Besitzt ein Feld eines Datensatzes als Wert einen Regex-Ausdruck kann man diesen wie folgt abfragen.

Codeblock
languagejs
themeEmacslanguagejs
pattern: /abc/
Hinweis

Es muss der komplette Regex-Ausdruck angegeben werden, um den entsprechenden Datensatz mit dem richtigen Wert zu erhalten.

...

Man kann Regex auch verwenden, um Felder abzufragen. 

Codeblock
languagejs
themeEmacslanguagejs
// Suche alle Städte, die mit FLO beginnen
city: {$regex: '^FLO'}
 
// ignoriere Groß- und Kleinschreibung
city: {$regex: '^flo', $options: 'i'}
 
// kurze Schreibweise
city: /^flo/i

...