MongoDB-Queries
Mit MongoDB ist es möglich interaktive Abfragen mit einer Alex Datenbank auszuführen. Unten angeführt sind einige Beispiele wie man Informationen über angelegte Objekte, eingespielte Module oder Alex-Version erhält.
Vorraussetzung
- mongo.exe starten, liegt im Alex-Exe Verzeichnis
- über rechte Maustaste auf Config-File und 'mongo shell'
- über Doppelklick auf Bfx.Alex.StartMongoShell.exe und auswählen von Config-File
Viel Spaß beim ausprobieren!
Beispiele
Beispiele für Abfragen über angelegte Objekte
Spezielle Namespaces:
db.getCollection( "version" ).find() db.boot.find();
Anzahl aller Objekte
db.idToObjectType.find().count();
Objekte löschen: http://www.mongodb.org/display/DOCS/Removing
Objekt mit bestimmter Id:
- Namespace herausfinden:
db.idToObjectType.find({ _id : 1 });
- Danach:
db.Namespace.find({ _id : 1 })
Gesamtes Personal:
db.Employee.find();
Personal mit Vorname:
db.Employee.find({ Forename: "Max" }); db.Employee.find({ Forename: /^ma/i }); // equals "like 'ma%'" in SQL, 'i' is for ignore case (caseInsensitive) -> 'ma%' or 'Ma%' or 'mA%' or 'MA%'
Moduleinformationen:
db.xtcmodul.find(); db.xtcdyn.find(); db.xtcstat.find();
Technische Informationen für Interessierte
Datenbankversion zurücksetzen
- Beispiel: auf Version 7.8.6.40 zurücksetzen
db.getCollection( "version" ).update( { "_id" : "version" },{ "_major" : NumberInt( 7 ), "_minor" : NumberInt( 806 ), "_bugfix" : NumberInt( 40 ) } )
- Beispiel: auf Version 2015.0.3.48 zurücksetzen
db.getCollection( "version" ).update( { "_id" : "version" },{ "_major" : NumberInt( 2015 ), "_minor" : NumberInt( 3 ), "_bugfix" : NumberInt( 48 ) } )
- Beispiel: auf Version 2020.17.90.23 zurücksetzen
db.getCollection( "version" ).update( { "_id" : "version" },{ "_major" : NumberInt( 2020 ), "_minor" : NumberInt( 1790 ), "_bugfix" : NumberInt( 23 ) } )
Datenbankversion zurücksetzen ab Version 2015.0.4.28
- Bespiel: von Version 2015_0_5_2 auf 2015_0_4_112 zurücksetzen
Ältere Version in dem Ordner AlexExe/2015 entpacken Bfx.Alex.Instal.exe als Administrator ausführen
In dem Ordner wo "_.bfx_CONFIG" liegt, befindet sich nun auch "_.bfx_CONFIG.bfx_MONGOJS".
Doppelklick auf "_.bfx_CONFIG.bfx_MONGOJS" Alex kann nun mit der älteren Version gestartet werden.
Info: Das zurücksetzen der Datenbankversion funktioniert auch mit Start Mongo-Shell. Zur Kontrolle mit welcher Version, Alex geöffnet wird: Start Mongo-Shell - db.getCollection( "version" ).find() - Enter
mongod.log im laufenden Betrieb erneuern
db = connect( "localhost:<port>/admin" ) db.runCommand( {logRotate : 1} )
Recovery wenn --repair nicht hilft
0) Vorweg "mongod/mongodump --repair" konnte dieses Problem nicht lösen 1) Datenbank mit Fehler öffnen 2) db.< Collection mit Fehler >.validate({full:true}) 3) Es sollte ein Fehler gefunden werden
z.B: "valid" : false, "errors" : [ "invalid object detected (see logs)" ], "advice" : "ns corrupt. See http://dochub.mongodb.org/core/data-recovery",
3.1) im mongod log steht dann "Invalid object detected in db.Day: invalid bson type in object with _id: 40346"
3.2) über die console kann dies verifiziert werden(id davor und danach war ok):
db.Day.find({"_id":40346}) Error: invalid bson type in object with unknown _id
4) Ungültiges document löschen über die console
db.Day.remove({"_id":40346}) WriteResult({ "nRemoved" : 1 })
5) Collection erneuert wie in Schritt 2 validieren, es dürften keine Probleme mehr gefunden werden
Script automatisiert ausführen über "*.mongoCommand" Datei
Dateien mit Endung "mongoCommand" die im gleichen Ordner sind wie die Konfiguration werden beim starten von Standalone/Server automatisch ausgeführt. Der Inhalt der Datei wird über db.runCommand(<Dateiinhalt>) ausgeführt.
Beispiel für eine solche Datei die beim Supervisor die LRU löscht:
{ "update": "AlexUser", "updates": [ { "q": { "_id": 1 }, "u": { "$unset": { "LRUObjects": "" } } } ] }
Die Anführungszeichen am Schlüssel sind nicht optional! Für Hilfe beim zusammenstellen eines gültigen JSON(Query) kann eine Seite wie z.B.: http://www.jsoneditoronline.org verwendet werden.