Heim Backend-Entwicklung PHP-Tutorial MongoDB-Nutzung in PHP

MongoDB-Nutzung in PHP

Nov 09, 2016 pm 02:00 PM
mongodb

1. Grundkonzepte von Mongodb
1. Benennungsregeln der Mongodb-Datenbank:
darf keine leere Zeichenfolge ("") sein.
darf kein '' (Leerzeichen), ., $, /, und enthalten

D:mongodbbin>mongo
Alternativ navigieren Sie im Windows Explorer zu C:mongobin und doppelklicken Sie auf mongo.exe.
Unabhängig davon, welche Methode Sie zum Starten wählen, wird die Shell angezeigt
MongoDB-Shell-Version: 1.6.5
Verbindung zu: Test wird hergestellt
>
Jetzt mit dem Testserver verbunden.
2.MongoDB-Installation und -Konfiguration unter Linux
1. Für 32-Bit-Linux
$ curl http://downloads.mongodb.org/linux/mongodb-linux-i686-1.4.4.tgz > mongo.tgz
$ tar xzf mongo.tgz
Für 64-Bit-Linux
$ curl http://downloads.mongodb.org/linux/mongodb-linux-x86_64-1.4.4.tgz > mongo .tgz
$ tar xzf mongo.tgz Wenn Curl nicht installiert ist, installieren Sie apt-get install curl
2. Standardmäßig speichert MongoDB Daten im Ordner /data/db/ Der Ordner muss manuell erstellt werden. Erstellen Sie es wie folgt: $ adduser mongodb $ passwd mongodb $ sudo mkdir -p /data/db/ $ sudo chown `id -u` /data/db $ chown -R mongodb:mongodb /data Natürlich können Sie es über angeben Der Befehl --dbpath MongoDB speichert Daten in einem anderen Verzeichnis.
3. Lassen Sie die Datenbank in der Konsole laufen: $ nohup ./mongodb-xxxxxxx/bin/mongod & $ ./mongodb-xxxxxxx/bin/mongo > db.foo.save( { a : 1 } ) > db .foo .find() Das Ergebnis ist: { "_id" : ObjectId("4cd181a31415ffb41a094f43"), "a" : 1 } OK! !
2. Mongodb-Anweisungen und zugehörige Vorgänge
a) Befehl „show“
ii Geben Sie show db in dos ein, um alle aktuellen Datenbanken anzuzeigen
>show dbs
admin
alphabet
color
colors
lokal
mymongo
test
>
iii Alle Tabellen in der aktuellen Datenbank anzeigen
>mymongo verwenden
auf db mymongo umgestellt
>Sammlungen anzeigen
colors
shell.colors
system.indexes
>
b) Befehl verwenden
i Geben Sie die Datenbank an, die Sie aktuell verwenden müssen. Wenn nicht, erstellen Sie eine neue Bibliothek. Wenn in dieser Bibliothek keine Daten vorhanden sind, wird das System nach einiger Zeit zerstört
ii. Verwenden Sie [Datenbankname]
c) Befehl einfügen
i Daten im JSON-Format hinzufügen
ii. Wenn in den hinzugefügten Daten keine Tabelle vorhanden ist, wird eine neue Tabelle erstellt und die Daten werden der Tabelle
iii db.[table name].insert()
> db.dingdan hinzugefügt. insert(
. .. {
... order_id: 109384,
... order_date: neues Datum("12/04/2010"),
... Kunde: {
... Name: „Joe Bloggs“,
... Firma: „XYZ Inc.“,
... Telefon: „(555) 123-4567“
... },
... Zahlung: {
... Typ: "Bargeld",
... Betrag: 4075,99,
... bezahlt_in_vollständig: wahr
... },
... Artikel: [
... {
... SKU: "ABC1200",
... Beschreibung: "Ein Beispielprodukt",
... Menge: 1,
... Preis_pro_Einheit: 75,99,
... }, {
... Artikelnummer: "XYZ3400",
... Beschreibung: "Ein teures Produkt",
... Menge: 2,
...            Preis pro Einheit: 2000
...                                                                                                                                     🎜>d) Speicherbefehl
i. Speichern Sie die Daten
ii Daten in die Tabelle
iii. Wenn die Daten in der Tabelle vorhanden sind, ändern Sie die neuen Daten
iv x ist das zu aktualisierende Objekt, bei dem es sich nur um einen einzelnen Datensatz handeln kann.
Wenn in der Sammlung bereits ein Datensatz mit derselben „_id“ wie das x-Objekt vorhanden ist. Mongodb ersetzt den vorhandenen Datensatz in der Sammlung durch das x-Objekt. Andernfalls wird das x-Objekt eingefügt. Wenn in x keine _id vorhanden ist, generiert das System automatisch eines und fügt es ein. Dies entspricht der Situation von upsert=true und multi=false in der obigen Update-Anweisung.

db.test0.save({count:40,test1:"OK"}); _id Das System generiert
db.test0.save({_id:40,count:40,test1:"OK" } ); Wenn in test0 eine _id gleich 40 vorhanden ist, wird diese ersetzt, andernfalls wird sie eingefügt.
e) Befehl zum Entfernen
i. Löschen Sie ein in der Tabelle angegebenes Datenelement
ii db .colors.save({"color":"112233"})
> db.colors.find()
{ "_id" : ObjectId("4e9bc2024fadb58af17b2f01"), "color" : "ff0000" }
{ "_id" : ObjectId("4e9bc2374fadb58af17b2f02"), "color" : "ff0000" }
{ "_id" : ObjectId("4e9bc2384fadb58af17b2f03"), "color" : "ff0000" }
{ " _id" : ObjectId("4e9bc2394fadb58af17b2f04"), "color" : "ff0000" ObjectID ("4E9BC23A4FADB58AF17B2F06"), "Farbe": "ff0000"}
{"_id": ObjectID ("4E9BC23A4FADB58AF17B2F07"), "Color": "4. fadb58af17b2f08" ), "color" : "ff0000" }
{ "_id" : ObjectId("4e9bc23b4fadb58af17b2f09"), "color" : "ff0000" }
{ "_id" : ObjectId("4e9bc23c4fadb58af17b2f0 a"), "color" : "ff0000" }
{ "_id" : ObjectId("4e9bc23c4fadb58af17b2f0b"), "color" : "ff0000" }
{ "_id" : ObjectId("4e9bc23d4fadb58af17b2f0c"), "color" : ff0000 112233"})
> db.colors.find()
{ "_id" : ObjectId("4e9bc2024fadb58af17b2f01"), "color" : "ff0000" }
{ "_id" : ObjectId("4e9bc2374fadb58af17b2f02 "), "color" : "ff0000" }
{ "_id" : ObjectId("4e9bc2384fadb58af17b2f03"), "color" : "ff0000" }
{ "_id" : ObjectId("4e9bc2394fadb58af17b2f04"), " color" : "ff0000" }
{ "_id" : ObjectId("4e9bc2394fadb58af17b2f05"), "color" : "ff0000" }
{ "_id" : ObjectId("4e9bc23a4fadb58af17b2f06"), "color" : " ff0000" }
{ "_id" : ObjectId("4e9bc23a4fadb58af17b2f07"), "color" : "ff0000" ?? _id" : ObjectId("4e9bc23c4fadb58af17b2f0b"), "color" : "ff0000" }
{ "_id" : ObjectId("4e9bc23d4fadb58af17b2f0c"), "color" : "ff0000" }
f) Aktualisierungsbefehl
i. Daten ändern
ii. db.[Tabellenname].update()
db.collection.update( Kriterien, objNew, upsert, multi )

Kriterien: Abfragebedingungen aktualisieren, ähnlich nach
objNew in der SQL-Aktualisierungsabfrage: Objekt aktualisieren und einige Aktualisierungsoperatoren (z. B. $, $inc ...) usw. können auch als
upsert nach dem Festlegen in der SQL-Aktualisierungsabfrage verstanden werden: Die Bedeutung dieses Parameters besteht darin, ob objNew eingefügt werden soll, wenn kein Aktualisierungsdatensatz vorhanden ist. Der Standardwert ist false und wird nicht eingefügt.
multi: Der Standardwert von mongodb ist „false“. Nur der erste gefundene Datensatz wird aktualisiert. Wenn dieser Parameter „true“ ist, werden alle gemäß den Bedingungen gefundenen Datensätze aktualisiert.

Beispiel:
db.test0.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } ); Ein Datensatz
db.test0.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true ); Alle aktualisiert
db .test0.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false ); Nur der erste wird hinzugefügt
db.test0 .update( { "count" : { $gt : 5 } , { $set : { "test5" : "OK"} },true,true ); Alle hinzugefügt
db.test0 " : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );alle aktualisiert

db.test0.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );Nur das erste Element wird aktualisiert

g) find-Befehl
i. Um Daten abzufragen, kann er mit den Skip- und Limit-Methoden verwendet werden, um Paging-Effekte zu erzielen.
ii. db.[table name].find({}).skip([num1]).limit([num2]), bei welchem ​​Datenelement num1 beginnt, num2 ist die Anzahl der abgefragten Daten, falls Die Daten reichen nicht aus, die verbleibenden Daten haben Vorrang
iii db.[table name].find({[_id:{ < : num }]}) Die Klammern sind Beispiele für Abfragebedingungen, größer als kleiner als und andere Vergleichsoperatoren Verwenden Sie stattdessen Übersetzungszeichen.
> use zm
switched to db zm
> db.zm.find().skip(10).limit(5);
{ "_id" : ObjectId("4e9e3d6b5240000000005a1c"), "char" : "k", "code" : 107 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a1d"), "char" : "l", "code" : 108 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a1e"), "char" : "m", "code" : 109 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a1f"), "char" : "n", "code" : 110 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a20"), "char" : "o", "code" : 111 }
>
h) findOne-Befehl
i. Fragen Sie die angegebene Abfrage ab Die erste Anweisung
ii. db.[table name].findOne()
> db.zm.findOne()
{ "_id" : ObjectId("4e9e3d6b5240000000005a12"), "char" : "a ", "code" : 97 }
Hinweis: Das O in findOne muss großgeschrieben werden.
i) Funktion
i. Benutzerdefinierte Funktion, Sie können sie direkt nach der Definition aufrufen
ii. Funktion testFunction(op1,op2,op3...){}
iii ( op1,op2,op3...){}
iv Die definierte Funktion kann direkt aufgerufen werden und return kann verwendet werden, um Daten zurückzugeben
> function testFunction(){
... db. zm.remove({ "code":{$in:[100,101,102,103]}})
... return db.zm.find({})
... }
> testFunction()
{ "_id" : ObjectId("4e9e3d6b5240000000005a12"), "char" : "a", "code" : 97 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a13"), "char" : "b" , "code" : 98 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a14"), "char" : "c", "code" : 99 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a19") , "char" : "h", "code" : 104 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a1a"), "char" : "i", "code" : 105 }
{ "_id " : ObjectId(" 4e9e3d6b5240000000005a1b"), "char" : "j", "code" : 106 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a1c"), "char" : "k", "code" : 107 } "m", " code" : 109 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a1f"), "char" : "n", "code" : 110 }
{ "_id" : ObjectId(" 4e9e3d6b5240000000005a20"), " char" : "o", "code" : 111 { "_id" : ObjectId("4e9e3d6b5240000000005a22"), "char" : "q", "code" : 113 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a23"), "char" : "r", " Code" : 114 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a24"), "char" : "s", "code" : 115 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a25"), " char": "t", "code": 116 }
{ "_id": ObjectId("4e9e3d6b5240000000005a26"), "char": "u", "code": 117 }
{ "_id": ObjectId("4e9e3d6b5240000000005a27" ), "char" : "v", "code" : 118 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a28"), "char" : "w", "code" : 119 }
{ " _id" : ObjectId("4e9e3d6b5240000000005a29"), "char" : "x", "code" : 120 }
hat mehr
j) var
i. Variablenbenennungstyp
ii. Das Gleiche wie JS Das Gleiche wie var in .
1. Die Benennung von var [name] stimmt auch mit den Benennungsregeln für js-Variablen überein.
k) Druckbefehl
i. Wird zum Drucken verwendet
ii. print([Strings]);
iii Wenn es sich bei dem Druckobjekt um Mongo-Daten handelt, werden diese nicht erkannt.
l) printJson-Befehl
i
auf admin umgestellt
>db.shutdownServer();
Server sollte ausgefallen sein...
MongoDB unterstützt verschiedene bedingte Operatoren, darunter:
? $lt (weniger als)
? $lte (kleiner als oder gleich)
? $gte (größer als oder gleich)
(übereinstimmend mit allen Werten im Array)
? $exists (überprüfen: Existiert das Feld)
? $ne (nicht gleich)
(entspricht einem oder mehreren Werten im Array)
? $nin (entspricht einem oder mehreren Werten im Array)
? $or (entspricht der einen oder anderen Abfrage)
? >? $size (entspricht einem beliebigen Array mit einer vorgegebenen Anzahl von Elementen)
? $type (übereinstimmt Werte mit dem angegebenen BSON-Datentyp)
? name.find({Feldname:{$gt:100}})
mongodb-Update-Operator:

1) $inc

Verwendung: { $inc: { Feld: Wert} }

bedeutet das Hinzufügen eines Werts zu einem numerischen Feld, zum Beispiel:

> db.test0.find( { "_id" : 15 } );
{ "_id" : { " floatApprox" : 15 }, "count" : 16, "test1" : "TESTTEST", "test2" : "OK", "test3" : "TESTTEST", "test4" : "OK", "test5" : "OK " }

> db.test0.update( { "_id" : 15 } , { $inc : { "count" : 1 } } );
> db.test0.find( { "_id" : 15 } ) ;
{ "_id" : { "floatApprox" : 15 }, "count" : 17, "test1" : "TESTTEST", "test2" : "OK", "test3" : "TESTTEST", "test4" : "OK", "test5" : "OK" }

> db.test0.update( { "_id" : 15 } , { $inc : { "count" : 2 } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatApprox" : 15 }, "count" : 19, "test1" : "TESTTEST", "test2" : "OK", "test3" : "TESTTEST", "test4" : "OK", "test5" : "OK" }

> db.test0.update( { "_id" : 15 } , { $inc : { "count" : -1 } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatApprox" : 15 }, „count“: 18, „test1“: „TESTTEST“, „test2“: „OK“, „test3“: „TESTTEST“, „test4“: „OK“, „test5“: „OK“ }


2) $set

Verwendung: { $set : { field : value } }

entspricht SQLs set field = value und alle Datentypen unterstützen $set . Beispiel:
> db.test0.update( { "_id" : 15 } , { $set : { "test1" : "testv1", "test2" : "testv2", "test3" : "testv3", test4" : "testv4" } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatApprox" : 15 }, "count" : 18 , „test1“ : „testv1“, „test2“ : „testv2“, „test3“ : „testv3“, „test4“ : „testv4“, „test5“ : „OK“ }

3) $ unset

Verwendung: { $unset : { field : 1} }

Wie der Name schon sagt, löscht es das Feld. Beispiel:
> db.test0.update( { "_id" : 15 } , { $unset : { "test1":1 } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatApprox" : 15 }, "count" : 18, "test2" : "testv2", "test3" : "testv3", "test4" : "testv4", " test5" : "OK" }

> db.test0.update( { "_id" : 15 } , { $unset : { "test2": 0 } } );
> db.test0. find( { "_id" : 15 } );
{ "_id" : { "floatApprox" : 15 }, "count" : 18, "test3" : "testv3", "test4" : "testv4", " test5" : "OK" }

> db.test0.update( { "_id" : 15 } , { $unset : { "test3":asdfasf } } );
Fr 14. 16. Mai: 17:38 JS-Fehler: ReferenceError: asdfasf ist nicht definiert (Shell):0

> db.test0.update( { "_id" : 15 } , { $unset : { "test3": "test" } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatApprox" : 15 }, "count" : 18, "test4" : " testv4", "test5" : "OK" }

Ich sehe nicht, wofür die 1 im Feld: 1 verwendet wird. Wie auch immer, solange da etwas ist, wird es in Ordnung sein.

4) $push
Verwendung: { $push : { field : value } }

Hängen Sie den Wert an das Feld an not Wenn vorhanden, wird ein neuer Array-Typ hinzugefügt. Beispiel:

> db.test0.update( { "_id" : 15 } , { $set : { "test1" : ["aaa","bbb"] } } );
> db .test0.find( { "_id" : 15 } );
{ "_id" : { "floatApprox" : 15 }, "count" : 18, "test1" : [ "aaa", "bbb" ], „test4“: „testv4“, „test5“: „OK“ }

> db.test0.update( { „_id“ : 15 } , { $push : { „test1“: „ccc“ } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatApprox" : 15 }, "count" : 18, "test1" : [ " aaa", "bbb", "ccc" ], "test4" : "testv4", "test5" : "OK" }

> db.test0.update( { "_id" : 15 } , { $push : { "test2": "ccc" } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatApprox" : 15 }, „count“: 18, „test1“: [ „aaa“, „bbb“, „ccc“ ], „test2“: [ „ccc“ ], „test4“: „testv4“, „test5“: „OK“ }

> db.test0.update( { "_id" : 15 } , { $push : { "test1": ["ddd","eee"] } } );
> db.test0 .find( { "_id" : 15 } );
{ "_id" : { "floatApprox" : 15 }, "count" : 18, "test1" : [ "aaa", "bbb", "ccc" , [ "ddd", "eee" ] ], "test2" : [ "ccc" ], "test4" : "testv4", "test5" : "OK" }
5) $pushAll

Verwendung: { $pushAll : { field : value_array } }

Wie $push, außer dass mehrere Werte gleichzeitig an ein Array-Feld angehängt werden können. Beispiel:

> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatApprox" : 15 }, "count" : 18, "test1" : [ „aaa“, „bbb“, „ccc“, [ „ddd“, „eee“ ] ], „test2“ : [ „ccc“ ], „test4“ : „testv4“, „test5“ : „OK“ }

> db.test0.update( { "_id" : 15 } , { $pushAll : { "test1": ["fff","ggg"] } } );
> db.test0 .find( { "_id" : 15 } );
{ "_id" : { "floatApprox" : 15 }, "count" : 18, "test1" : [ "aaa", "bbb", "ccc" , [ „ddd“, „eee“ ], „fff“, „ggg“ ], „test2“ : [ „ccc“ ], „test4“ : „testv4“, „test5“ : „OK“ }

6)$addToSet
Verwendung: { $addToSet : { field : value } }

Fügen Sie einen Wert zum Array hinzu und fügen Sie ihn nur hinzu, wenn der Wert nicht im Array enthalten ist. Beispiel:
> db.test0.update( { "_id" : 15 } , { $addToSet : { "test1": {$each : ["444","555"] } } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatApprox" : 15 }, "count" : 18, "test1" : [
"aaa",
"bbb",
"ccc",
[
"ddd",
"eee"
],
"fff",
"ggg",
[
"111",
"222"
],
"444",
"555"
], "test2" : [ "ccc" ], "test4" : "testv4", "test5" : "OK" }
> db.test0.update( { "_id" : 15 } , { $addToSet : { "test1": {$each : ["444 ","555"] } } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatApprox" : 15 }, "count" : 18, "test1": [
"aaa",
"bbb",
"ccc",
[
"ddd",
"eee"
],
"fff",
"ggg",
[
"111",
"222"
],
"444",
"555"
], "test2" : [ "ccc" ], "test4" : "testv4", "test5" : "OK" }
> db.test0.update( { "_id" : 15 } , { $ addToSet : { "test1": ["444","555"] } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatApprox " : 15 }, "count" : 18, "test1" : [
"aaa",
"bbb",
"ccc",
[
"ddd",
"eee"
],
"fff",
"ggg",
[
"111",
"222"
],
"444 ",
"555",
[
"444",
"555"
]
], "test2" : [ "ccc" ], "test4" : " testv4", "test5" : "OK" }
> db.test0.update( { "_id" : 15 } , { $addToSet : { "test1": ["444","555"] } } ) ;
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatApprox" : 15 }, "count" : 18, "test1" : [
„aaa“,
“bbb“,
“ccc“,
[
“ddd“,
“eee“
],
“fff“,
"ggg",
[
"111",
"222"
],
"444",
"555",
[
"444" ,
"555"
]
], "test2" : [ "ccc" ], "test4" : "testv4", "test5" : "OK" }


7) $pop

Einen Wert im Array löschen

Verwendung:
Letzten Wert löschen: { $pop : { field : 1 } }
Den ersten löschen Wert: { $pop : { field : -1 } }

Beachten Sie, dass nur ein Wert gelöscht werden kann, d. h. nur 1 oder -1 kann verwendet werden, 2 oder -2 jedoch nicht um zwei Werte zu löschen. Es können nur Mongodb 1.1 und höhere Versionen verwendet werden, zum Beispiel:
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatApprox" : 15 }, "count " : 18, "test1" : [
"bbb",
"ccc",
[
"ddd",
"eee"
],
"fff " ,
"ggg",
[
"111",
"222"
],
"444"
], "test2" : [ "ccc" ] , "test4" : "testv4", "test5" : "OK" }
> db.test0.update( { "_id" : 15 } , { $pop : { "test1": -1 } } ) ;
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatApprox" : 15 }, "count" : 18, "test1" : [
" ccc",
[
"ddd",
"eee"
],
"fff",
"ggg",
[
"111" ,
"222"
],
"444"
], "test2" : [ "ccc" ], "test4" : "testv4", "test5" : "OK" }
> db.test0.update( { "_id" : 15 } , { $pop : { "test1": 1 } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatApprox" : 15 }, "count" : 18, "test1" : [ "ccc", [ "ddd", "eee" ], "fff", "ggg", [ " 111", "222" ] ], "test2" : [ "ccc" ], "test4" : "testv4",
"test5" : "OK" }

8) $pull

Verwendung: $pull : { field : value } }

Löschen Sie einen Wert gleich value aus dem Array-Feld. Beispiel:
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatApprox" : 15 }, "count" : 18, "test1" : [ "ccc ", [ "ddd", "eee" ], "fff", "ggg", [ "111", "222" ] ], "test2" : [ "ccc" ], "test4" : "testv4",
"test5" : "OK" }

> db.test0.update( { "_id" : 15 } , { $pull : { "test1": "ggg" } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatApprox" : 15 }, "count" : 18, "test1" : [ "ccc", [ "ddd ", "eee" ], "fff", [ "111", "222" ] ], "test2" : [ "ccc" ], "test4" : "testv4", "test5"
: "OK" }

9) $pullAll

Verwendung: { $pullAll : { field : value_array } }

Wie bei $pull können Sie mehrere Werte im Array löschen auf einmal. Beispiel:
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatApprox" : 15 }, "count" : 18, "test1" : [ "ccc ", [ "ddd", "eee" ], "fff", [ "111", "222" ] ], "test2" : [ "ccc" ], "test4" : "testv4", "test5"
: "OK" }

> db.test0.update( { "_id" : 15 } , { $pullAll : { "test1": [ "ccc" , "fff" ] } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatApprox" : 15 }, "count" : 18, "test1" : [ [ "ddd", „eee“ ], [ „111“, „222“ ] ], „test2“ : [ „ccc“ ], „test4“ : „testv4“, „test5“ : „OK“ }


10) $-Operator

$ ist seine eigene Bedeutung, die ein Element im Array darstellt, das er basierend auf Bedingungen gefunden hat.
> t.find()
{ "_id" : ObjectId("4b97e62bf1d8c7152c9ccb74"), "title" : "ABC", "comments" : [ { "by" : "joe", "votes" : 3 }, { "by" : "jane", "votes" : 7 } ] }

> t.update( {'comments.by':'joe'}, {$inc:{'comments .$.votes':1}}, false, true )

> t.find()
{ "_id" : ObjectId("4b97e62bf1d8c7152c9ccb74"), "title" : "ABC", " Kommentare“ : [ { „by“ : „joe“, „votes“ : 4 }, { „by“ : „jane“, „votes“ : 7 } ] }

Es ist zu beachten, dass $ nur das erste gefundene Array-Element anwendet und der Rest ignoriert wird. Schauen wir uns das Beispiel an:

> t.find();
{ "_id" : ObjectId("4b9e4a1fc583fa1c76198319"), "x" : [ 1, 2, 3, 2 ] }
> t.update({x: 2}, {$inc: {"x.$": 1}}, false, true);
> t.find();

Etwas anderes Zu beachten: Wenn $ mit $unset verwendet wird, bleibt ein Null-Array-Element übrig, Sie können jedoch {$pull:{x:null}} verwenden, um alle Null-Array-Elemente zu löschen. Beispiel:
> t.insert({x: [1,2,3,4,3,2,3,4]})
> t.find()
{ "_id" : ObjectId ("4bde2ad3755d00000000710e"), "x" : [ 1, 2, 3, 4, 3, 2, 3, 4 ] }
> t.update({x:3}, {$unset:{"x. $":1}})
> t.find()
{ "_id" : ObjectId("4bde2ad3755d00000000710e"), "x" : [ 1, 2, null, 4, 3, 2, 3, 4 ] 🎜>

{ "_id" : ObjectId("4b9e4a1fc583fa1c76198319"), "x" : [ 1, 3, 3, 2 ] }
Indexerstellung in Mongodb:
db.[table name].ensureIndex( { num1: 1, num2:-1}) num1 und num2 sind die Felder für die Indizierung
Beim Erstellen eines Index müssen Sie die folgenden Fragen berücksichtigen:
(1). Welche Schlüssel müssen indiziert werden?
(2). Welche Indexrichtung hat jeder Schlüssel?
(3). Wie gehe ich mit der Erweiterung um? Gibt es eine andere Anordnung der Schlüssel, die mehr häufig verwendete Daten im Speicher behalten würde?
db.[table name].ensureIndex({num1: 1,num2:-1},{"background":true})//Ändern Sie den langjährigen Index
db.runCommand({"dropIndexes": „foo“, „index“: „alphabet“})
Wenn Sie alle Indizes löschen möchten, können Sie * den Wert von „index“ zuweisen.
Master-Slave-Replikation in Mongodb
Master-Slave-Replikation kann für Datenbanksicherung, Fehlerwiederherstellung, Leseerweiterung usw. verwendet werden. (Derzeit gibt es keinen Mechanismus zur Replikation von Slave-Knoten).
1. Führen Sie mongod –master aus, um den Master-Server zu starten.
2. Führen Sie mongod –slave –source master_address aus, um den Slave-Server zu starten. (master_address ist die Adresse des Masterknotens)
3. Erstellen Sie ein Verzeichnis für den Masterknoten und binden Sie den Port (10000):
$mkdir –p ~/dbs/master
$ ./mongod – dbpath ~/ dbs/master –port 10000 –master
4. Legen Sie das Slave-Knotenverzeichnis fest (wählen Sie ein anderes Verzeichnis und einen anderen Port)
$mkdir –p ~/dbs/slave
$ ./mongod –dbpath ~/dbs/ Slave –port 10001 –slave –source
localhost: 10000
Option: -only (angeben, dass nur eine bestimmte Datenbank vom Slave-Knoten kopiert werden soll)
-slavedelay (wird auf dem Slave-Knoten verwendet, beim Anwenden des Master-Knotens Verzögerung während des Betriebs hinzufügen)
-fastsync (Slave-Knoten basierend auf dem Daten-Snapshot des Master-Knotens starten und Master-Slave-Synchronisation implementieren)
-autoresync (Master-Slave-Synchronisation automatisch fortsetzen)
-oplogSize (Master-Knoten-Oplog Die Größeneinheit ist MB)
3. GridFS von Mongodb
Da Mongodb große Datenspeicherung unterstützt, verfügt Mongodb auch über ein verteiltes Dateisystem, GirdFS, das große Datenspeicherung unterstützen kann. In Mongodb gibt es auch ein BSON-Dokumentobjekt mit einer maximalen Größe von 4 MB . Selbst ohne Größenbeschränkungen kann BSON keine schnellen Bereichsabfragen für große Datenmengen erfüllen, daher führte mongodb GridFS ein.
4. Test mit Code in PHP:
MongoDB ist wie MySQL in Form einer PHP-Erweiterungsbibliothek .dll in PHP integriert.
Gehen Sie auf die folgende Website, um die DLL-Datei der entsprechenden PHP-Version unter Windows herunterzuladen:
http://cn.php.net/manual/en/mongo.installation.php#mongo.installation.windows
Entsprechend Ihrer eigenen PHP-Version, ob sie threadsicher ist (kann in phpinfo überprüft werden) usw. Wählen Sie die entsprechende Version zum Herunterladen aus, entpacken Sie sie und erhalten Sie die Datei php_mongo.dll. Kopieren Sie es in das ext-Verzeichnis im PHP-Installationsverzeichnis. Hinzufügen: extension = php_mongo.dll;
Starten Sie den Webserver (Apache oder Nginx) in der Datei php.ini neu. Sie sollten mingoDB-Informationen in phpinfo sehen können, andernfalls liegt ein Installationsproblem vor. Möglicherweise ist die heruntergeladene mingoDB-Erweiterung falsch.
Php betreibt mongodb
1. Stellen Sie eine Verbindung mit mongoDB her:
Instanziieren Sie direkt die Mongo-Klasse, um eine Verbindung zu erstellen:
$mo = new Mongo(); // Holen Sie sich ein Mongo-Verbindungsobjekt
Instanziieren Erstellen Sie eine Mongo-Klasse und stellen Sie eine Verbindung mit dem Standardport „localhost:27017“ mongoDB her.
Wenn Sie eine Verbindung zu anderen Hosts herstellen möchten, können Sie Folgendes schreiben:
$mongo = new Mongo("mongodb://username:password@192.168.1.22:12345");
Andere Möglichkeit, Beispiel Verwandeln Sie die Mongo-Klasse in eine Mongo-Klasse und stellen Sie dann manuell eine Verbindung her:
$mongo= newMongo("mongodb://username:password@192.168.1.22:12345",array('connect'=>false)) ;//Initialisierungsklasse
$mongo->connect();//Eine Verbindung erstellen
Einige nützliche Methoden in der Mongo-Klasse:
Mongo::listDBs()
Gibt eine Datenbank zurück, die die Datenbank enthält ( DB) Informationen zum aktuellen Mongo-Service-Array.
$mo = new Mongo();
$dbs = $mo->listDBs();//Erhalten Sie ein Array mit Datenbankinformationen
Mongo::selectCollection($db,$coll)
Gibt ein Sammlungsobjekt in einer bestimmten Datenbank unter der aktuellen Verbindung zurück.
$mo = new Mongo();
$coll = $mo->selectCollection('db','mycoll');//Ein Sammlungsobjekt abrufen
Wählen Sie die gewünschte Datenbank (Mongo-Klasse) aus:
Eine Möglichkeit:
$mongo = new Mongo();
$db = $mongo->foo;//Ein MongoDB-Objekt abrufen
Eine andere Möglichkeit:
$mongo = new Mongo( );
$db = $mongo->selectDB('foo');//Ein MongoDB-Objekt abrufen
Nützliche Funktionen in MongoDB:
Ein MongoDB-Objekt erstellen
$mo = new Mongo() ;
$db = new MongoDB($mo,'dbname');//Erhalten Sie ein MongoDB-Objekt durch Erstellung
Löschen Sie die aktuelle Datenbank
$db = $mo->dbname; ->drop();
Den aktuellen Datenbanknamen abrufen
$db = $mo->dbname;
$db->_tostring();
Wählen Sie die gewünschte Sammlung aus:
A:
$mo = new Mongo();
$coll = $mo->dbname->collname;//Ein Sammlungsobjekt abrufen
B:
$db = $mo ->selectDB(' dbname');
$coll = $db->collname;
C:
$db = $mo->dbname;
$coll = $db->selectCollectoin( 'collname'); //Erhalte ein Sammlungsobjekt
Daten einfügen (MongoCollection-Objekt):
MongoCollection::insert(array $a,array $options)
array $a Das einzufügende Array
array $options Optionen
sicher, ob das Operationsergebnis zurückgegeben werden soll Informationen
Ob fsync direkt in die physische Festplatte eingefügt wird

$coll = $mo->db->foo;
$a = array('a'=>'b');
$options = array('safe'=>true);
$rs =$coll->insert($a,$options);
$rs ist ein Array vom Typ Array, das Operationsinformationen enthält
Datenbankeinträge löschen in (MongoCollection-Objekt):
MongoCollection::remove(array $criteria,array $options)
array $criteria Conditions
array $options Options
safe Gibt an, ob der Vorgang zurückgegeben werden soll Ergebnis
fsync Ob es sich direkt auf die physische Festplatte auswirkt
justOne ob es nur einen Datensatz betrifft

$coll = $mo->db->coll;
$c = array(' a'=>1,' s'=>array('$lt'=>100));
$options = array('safe'=>true);
$rs = $coll->remove ($c,$options) ;
$rs ist ein Array vom Typ Array, das Operationsinformationen enthält
Datensätze in der Datenbank aktualisieren (MongoCollection-Objekt):
MongoCollection::update(array $criceria,array $newobj ,array $options)
array $criteria Conditions
array $newobj Zu aktualisierender Inhalt
array $options Options
sicher, ob das Operationsergebnis zurückgegeben werden soll
fsync, ob es sich direkt auf die physische Festplatte auswirkt disk
Upsert, ob keine passenden Daten vorhanden sind. Fügen Sie einfach ein neues
Multiple hinzu, um zu sehen, ob es alle Datensätze betrifft, die die Bedingungen erfüllen. Standardmäßig betrifft es nur einen

$coll = $mo-. >db->coll;
$c = array('a' =>1,'s'=>array('$lt'=>100));
$newobj = array('e'= >'f','x'=>'y');
$options = array('safe'=>true,'multiple'=>true);
$rs = $coll->remove( $c,$newobj,$options);
$rs ist ein Array vom Array-Typ, das Operationsinformationen enthält
Sammlung abfragen, um einen einzelnen Datensatz zu erhalten (MongoCollection-Klasse):
array MongoCollection::findOne(array $query,array $fields)
array $query Condition
array $fields Zu erhaltende Felder

$coll = $mo->db->coll;
$query = array(' s'=>array('$lt'=>100));
$fields = array('a'=>true,'b'=>true);
$rs = $coll->findOne ($query,$fields);
Wenn es ein Ergebnis gibt, geben Sie ein Array zurück, wenn es kein Ergebnis gibt, geben Sie NULL zurück
Abfragesammlung, um mehrere Datensätze zu erhalten (MongoCollection-Klasse):
MongoCursor MongoCollection:: find(array $query,array $fields)
array $query-Bedingung
array $-Felder Zu erhaltende Felder

$coll = $mo->db->coll;
$query = array('s'=>array('$lt'=>100));
$fields = array('a'=>true,'b'=>true);
$cursor = $coll ->find($query,$fields);
Gibt ein Cursor-Datensatzobjekt MongoCursor zurück.


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verbinden Sie Navicat mit Mongodb So verbinden Sie Navicat mit Mongodb Apr 24, 2024 am 11:27 AM

Um mit Navicat eine Verbindung zu MongoDB herzustellen, müssen Sie: Navicat installieren. Eine MongoDB-Verbindung erstellen: a. Geben Sie den Verbindungsnamen, die Hostadresse und den Port ein. b. Geben Sie die Authentifizierungsinformationen ein (falls erforderlich). Überprüfen Sie die Verbindung Speichern Sie die Verbindung

Was nützt net4.0? Was nützt net4.0? May 10, 2024 am 01:09 AM

.NET 4.0 wird zum Erstellen einer Vielzahl von Anwendungen verwendet und bietet Anwendungsentwicklern umfangreiche Funktionen, darunter objektorientierte Programmierung, Flexibilität, leistungsstarke Architektur, Cloud-Computing-Integration, Leistungsoptimierung, umfangreiche Bibliotheken, Sicherheit, Skalierbarkeit, Datenzugriff und Mobilgeräte Entwicklungsunterstützung.

Integration von Java-Funktionen und Datenbanken in serverlose Architektur Integration von Java-Funktionen und Datenbanken in serverlose Architektur Apr 28, 2024 am 08:57 AM

In einer serverlosen Architektur können Java-Funktionen in die Datenbank integriert werden, um auf Daten in der Datenbank zuzugreifen und diese zu bearbeiten. Zu den wichtigsten Schritten gehören: Erstellen von Java-Funktionen, Konfigurieren von Umgebungsvariablen, Bereitstellen von Funktionen und Testen von Funktionen. Durch Befolgen dieser Schritte können Entwickler komplexe Anwendungen erstellen, die nahtlos auf in Datenbanken gespeicherte Daten zugreifen.

So konfigurieren Sie die automatische Expansion von MongoDB auf Debian So konfigurieren Sie die automatische Expansion von MongoDB auf Debian Apr 02, 2025 am 07:36 AM

In diesem Artikel wird vorgestellt, wie MongoDB im Debian -System konfiguriert wird, um eine automatische Expansion zu erzielen. Die Hauptschritte umfassen das Einrichten der MongoDB -Replikat -Set und die Überwachung des Speicherplatzes. 1. MongoDB Installation Erstens stellen Sie sicher, dass MongoDB im Debian -System installiert ist. Installieren Sie den folgenden Befehl: sudoaptupdatesudoaptinstall-emongoDB-org 2. Konfigurieren von MongoDB Replika-Set MongoDB Replikate sorgt für eine hohe Verfügbarkeit und Datenreduktion, was die Grundlage für die Erreichung der automatischen Kapazitätserweiterung darstellt. Start MongoDB Service: SudosystemctlstartMongodsudosysys

Wie Sie eine hohe Verfügbarkeit von MongoDB bei Debian gewährleisten Wie Sie eine hohe Verfügbarkeit von MongoDB bei Debian gewährleisten Apr 02, 2025 am 07:21 AM

In diesem Artikel wird beschrieben, wie man eine hoch verfügbare MongoDB -Datenbank für ein Debian -System erstellt. Wir werden mehrere Möglichkeiten untersuchen, um sicherzustellen, dass die Datensicherheit und -Dienste weiter funktionieren. Schlüsselstrategie: ReplicaSet: Replicaset: Verwenden Sie Replikaten, um Datenreduktion und automatisches Failover zu erreichen. Wenn ein Master -Knoten fehlschlägt, wählt der Replikate -Set automatisch einen neuen Masterknoten, um die kontinuierliche Verfügbarkeit des Dienstes zu gewährleisten. Datensicherung und Wiederherstellung: Verwenden Sie den Befehl mongodump regelmäßig, um die Datenbank zu sichern und effektive Wiederherstellungsstrategien zu formulieren, um das Risiko eines Datenverlusts zu behandeln. Überwachung und Alarme: Überwachungsinstrumente (wie Prometheus, Grafana) bereitstellen, um den laufenden Status von MongoDB in Echtzeit zu überwachen, und

Kann Navicat eine Verbindung zu Mongodb herstellen? Kann Navicat eine Verbindung zu Mongodb herstellen? Apr 23, 2024 pm 05:15 PM

Ja, Navicat kann eine Verbindung zur MongoDB-Datenbank herstellen. Zu den spezifischen Schritten gehören: Öffnen Sie Navicat und erstellen Sie eine neue Verbindung. Wählen Sie den Datenbanktyp MongoDB aus. Geben Sie die MongoDB-Hostadresse, den Port und den Datenbanknamen ein. Geben Sie Ihren MongoDB-Benutzernamen und Ihr Passwort ein (falls erforderlich). Klicken Sie auf die Schaltfläche „Verbinden“.

Navicat -Methode zum Anzeigen von MongoDB -Datenbankkennwort Navicat -Methode zum Anzeigen von MongoDB -Datenbankkennwort Apr 08, 2025 pm 09:39 PM

Es ist unmöglich, das MongoDB -Passwort direkt über Navicat anzuzeigen, da es als Hash -Werte gespeichert ist. So rufen Sie verlorene Passwörter ab: 1. Passwörter zurücksetzen; 2. Überprüfen Sie die Konfigurationsdateien (können Hash -Werte enthalten). 3. Überprüfen Sie Codes (May Hardcode -Passwörter).

Großes Update von Pi Coin: Die PI Bank kommt! Großes Update von Pi Coin: Die PI Bank kommt! Mar 03, 2025 pm 06:18 PM

Pinetwork startet Pibank, eine revolutionäre Mobile -Banking -Plattform! PiNetwork today released a major update on Elmahrosa (Face) PIMISRBank, referred to as PiBank, which perfectly integrates traditional banking services with PiNetwork cryptocurrency functions to realize the atomic exchange of fiat currencies and cryptocurrencies (supports the swap between fiat currencies such as the US dollar, euro, and Indonesian rupiah with cryptocurrencies such as PiCoin, USDT, and USDC). Was ist der Charme von Pibank? Lass uns herausfinden! Die Hauptfunktionen von Pibank: One-Stop-Management von Bankkonten und Kryptowährungsvermögen. Unterstützen Sie Echtzeittransaktionen und übernehmen Sie Biospezies

See all articles