Database Reference
In-Depth Information
Zuerst wollen wir aber ein kleines Experiment durchführen, um die Leis-
tungsfähigkeit von MongoDBs B-Tree-Index kennenzulernen. Dazu erzeu-
gen wir eine Reihe von Telefonnummern mit zufälligen Länderkennungen
(Sie können den Code natürlich durch Ihre eigene Länderkennung ersetzen).
Geben Sie den folgenden Code in der Console ein. Er generiert 100000 Te-
lefonnummern (was eine Weile dauern kann) zwischen
1-800-555-0000
und
1-800-565-9999
.
mongo/populate_phones.js
populatePhones =
function
(area,start,stop) {
for
(
var
i=start; i < stop; i++) {
var
country = 1 + ((Math.random()
*
8) << 0);
var
num = (country
*
1e10) + (area
*
1e7) + i;
db.phones.insert({
_
id: num,
components: {
country: country,
area: area,
prefix: (i
*
1e-4) << 0,
number: i
},
display:
"+"
+ country +
""
+ area +
"-"
+i
});
}
}
Führen Sie die Funktion mit einer dreistelligen Vorwahl (wie 800) und einem
Bereich von siebenstelligen Zahlen aus (5550000 bis 5650000 - achten Sie
bei der Eingabe auf die Nullen).
populatePhones( 800, 5550000, 5650000 )
db.phones.find().limit(2)
{
"
_
id"
: 18005550000,
"components"
:{
"country"
:1,
"area"
: 800,
"prefix"
: 555,
"number"
: 5550000 },
"display"
:
"+1 800-5550000"
}
{
"
_
id"
: 88005550001,
"components"
:{
"country"
:8,
"area"
: 800,
"prefix"
: 555,
"number"
: 5550001 },
"display"
:
"+8 800-5550001"
}
Wenn eine neue Collection erzeugt wird, legt Mongo automatisch einen Index
über die
_
id
an. Diese Indizes finden Sie in der
system.indexes
-Collection.
Die folgende Query zeigt alle Indizes in der Datenbank:
db.system.indexes.find()
{
"name"
:
"
_
id
_
"
,
"ns"
:
"book.phones"
,
"key"
:{
"
_
id"
:1}}
Die meisten Queries umfassen mehr Felder als die
_
id
, d. h., wir müssen
Indizes auch für diese Felder erzeugen.