Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

« Vorherige Version anzeigen Version 4 Nächste Version anzeigen »

The find-query is based on the syntax of the MongoDB JavaScript driver (http://mongodb.github.io/node-mongodb-native/api-generated/collection.html#find). At least one query object is required. Optionally you can also specify an options object.

{query}[, {options}]

A special feature of Mongo Management Studio is to enter the queries as quickly and easily as possible. The following example queries refer to the collection zipcode from the Getting started tutorial.

// Search all cities in the U.S. State of California. (CA)
// all the following queries return the same result
 
// standard MongoDB query
{state: "CA"}
 
// If there is no options object, the curly braces can be omitted
state: "CA"
 
// You can also write everything in quotation marks
"state": "CA"
 
// Or use single quotes
state: 'CA'

MongoDB queries always distinguishes between upper and lowercase. To work around this, you can use Regular Expressions.


Of course it is possible to make more complex queries in this manner.

//Find all cities in the U.S. State of Alabama(AL) with more than 40,000 inhabitants
 
// standard MongoDB query
{
	state: "AL",
	pop: {
		$gt: 40000
	}
}
 
// shortened query
state: "AL", pop: {$gt: 40000}
 
// shortened query without whitespaces
state:"AL",pop:{$gt:40000}

Using options

// Find all cities in the U.S. State of Alabama(AL) with more than 40,000 inhabitants and return only the names of the cities as result
{state: "AL", pop: {$gt: 40000}}, {fields: {city: 1}}

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

// also id field leave out
{state: "AL", pop: {$gt: 40000}}, {fields: {city: 1, _id: 0}}
 
// Find all cities in the U.S. State of Alabama(AL) with a population of more than 10,000 and sort in ascending order by city name
{state: "AL", pop: {$gt: 10000}}, {sort: {city: 1}}
 
// Find all cities in the U.S. State of Alabama(AL) with a population of more than 10,000 and return 10 documents, whereby the first 20 documents are skipped
{state: "AL", pop: {$gt: 10000}}, {limit: 10, skip: 20}

When using an options object curly brackets must be used in the query object.

In der Tabellenansicht kann auch Sortieren, ohne dass man eine sort option verwenden muss. Dazu genügt es, auf den Namen einer Spalte zu klicken, um nach dieser zu sortieren. Beim nochmaligen Klick auf den Spaltennamen wird die Sortierung umgekehrt.

Spezielle Datentypen

ObjectId

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

{_id: ObjectId('52bd27ebf370afe931001364')}
{_id: ObjectId("52bd27ebf370afe931001364")}
_id: ObjectId('52bd27ebf370afe931001364')
_id: ObjectId("52bd27ebf370afe931001364")
_id: "52bd27ebf370afe931001364"
_id: '52bd27ebf370afe931001364'

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 über den Konsolenmodus verwenden. Ansonsten werden keine Daten gefunden.

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

Datumswerte

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

// 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)

JavaScript arbeitet in Millisekunden, UNIX timestamps müssen mit 1000 multipliziert werden, um korrekt umgerechnet oder angezeigt werden zu können.

Regex als Wertzuweisung eines Datenfeldes

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

pattern: /abc/

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

Regex-Abfragen für Felder mit Strings

Man kann Regex auch verwenden, um Felder abzufragen. 

// 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

In der derzeitigen Version werden lediglich die Parameter "i" sowie "m" als Optionen bei der Kurzschreibweise unterstützt. Die Parameter "s" und "x" folgen in einer späteren Version.

Genauere Informationen zum Gebrauch von Regex-Ausdrücken in Abfragen kann man hier nachlesen http://docs.mongodb.org/manual/reference/operator/query/regex/

  • Keine Stichwörter