Database Reference
In-Depth Information
db.towns.find(
{ name : /^P/, population : { $lt : 10000 } },
{ name : 1, population : 1 }
)
{
"name"
:
"Punxsutawney"
,
"population"
: 6200 }
Bedingungsoperatoren haben bei Mongo das Format
feld : { $op : wert }
,
wobei
$op
eine Operation wie
$ne
(nicht gleich) ist. Sie könnten sich eine etwas
kompaktere Syntax wie
feld < wert
wünschen, doch hier handelt es sich um
JavaScript-Code, nicht um eine domänenspezifische Query-Sprache, d. h.,
die Queries müssen den JavaScript-Syntaxregeln entsprechen. (Später zei-
gen wir, wie man in bestimmten Fällen eine kürzere Syntax nutzen kann,
aber im Moment überspringen wir das.)
Die gute Nachricht in Bezug auf JavaScript als Query-Sprache lautet, dass
Sie die Operationen so aufbauen können, als wären sie Objekte. Im folgenden
Beispiel bauen wir ein Kriterium auf, bei dem die Einwohnerzahl zwischen
10000 und einer Million liegen soll.
var
population
_
range = {}
population
_
range[
'$lt'
] = 1000000
population
_
range[
'$gt'
] = 10000
db.towns.find(
{ name : /^P/, population : population
_
range },
{ name: 1 }
)
{
"
_
id"
: ObjectId(
"4d0ada87bb30773266f39fe5"
),
"name"
:
"Portland"
}
Wir sind nicht auf Zahlenbereiche beschränkt, sondern können auch Da-
tumsbereiche abrufen. So können wir beispielsweise alle Namen mit einem
last_census
kleiner oder gleich dem 31.1.2008 wie folgt finden:
db.towns.find(
{ last
_
census : { $lte : ISODate(
'2008-31-01'
)}},
{
_
id : 0, name: 1 }
)
{
"name"
:
"Punxsutawney"
}
{
"name"
:
"Portland"
}
Beachten Sie, wie wir das
_
id
-Feld in der Ausgabe unterdrücken, indem wir
es explizit auf
0
setzen.