MongoDB-Queries

Aus ALEX Wiki
Wechseln zu: Navigation, Suche

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

MongoDB-Queries


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.