Laden...

Wie kann ich bei MongoDB über einen Cursor iterieren?

Erstellt von Michael1995 vor 3 Jahren Letzter Beitrag vor 3 Jahren 591 Views
M
Michael1995 Themenstarter:in
22 Beiträge seit 2020
vor 3 Jahren
Wie kann ich bei MongoDB über einen Cursor iterieren?

verwendetes Datenbanksystem: MongoDB

Servus zusammen,

anbei hochgeladen die Aufgabenstellung.
habe mich jetzt einigermaßen viel mit MongoDB beschäftigt, doch die Lösung will einfach nicht klappen. Meine Grundidee, einfach die Unis in die variable FHs speichern (=Cursor). Und anschließend diese Unis durchgehen, alle Forscher dazu finden. und die einzelnen Forscher in der verschachtelten Schleife ausgeben.
Irgendwie denke ich, stimmt das FHs.uname nicht ganz? Dies war eine Aufgabe davor möglich, da ich eine Variable verwendet habe (die ich durch findOne-Methode generiert habe aber).
zur Info: uniname ist Feldname der Collection forscher, uname ist Feldname der Collection uni.

Mein Code:

var FHs = db.uni.find({gruendungsdatum: {$lt: "1975-1-1"}});

while (FHs.hasNext()) {
	FHs.next();
	var FHForscher = db.forscher.find({uniname: FHs.uname});
	while(FHForscher.hasNext()) {
		printjson(FHForscher.next());
        }
}

Aufgabe:

Die Namen aller Forscher aller Hochschulen mit Gründungsdatum vor dem
1.1.1975.
Auch hier sind zwei Schritte notwendig: zuerst einer Variablen die gesuchten
Hochschulen zuweisen (über find(), das erzeugt einen Cursor). Dann den
Cursor über die gefundenen Hochschulen iterieren lassen (Methoden
hasNext() und next() und dabei für jede Hochschule ihre Forscher finden
(erzeugt wiederum einen Cursor) und danach über diesen zweiten Cursor die
Namen der Forscher ausgeben (Methoden hasNext(), next() und printjson().

Danke schonmal für die kommenden Anregungen 😉

3.170 Beiträge seit 2006
vor 3 Jahren

Hallo,

hat FHs.next() nicht einen Rückgabewert, den Du benutzen solltest, um darauf .uname aufzurufen?

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

M
Michael1995 Themenstarter:in
22 Beiträge seit 2020
vor 3 Jahren

Servus,

genau das war der Haken.
musste nur Folgendes machen:
var FH = FHs.next();
und dann Zugriff darauf: FH.uname

Danke dir, habe ich vor 2 Tagen aber schon geschafft 😁 👍