Mongoose / Mongo findet in einem Array von objectIds

8

Ich habe diesen Gegenstand in mongo:

%Vor%

Ich möchte solche Produkte finden, die diese Kategorie haben. Ich habe es versucht:

%Vor%

Aber nichts funktioniert. Ich kann per ID einfach mit: _id: '5052843e023273693300013c' abrufen.

Beachten Sie, dass beim Einfügen der Produkte die Kategorie-ID als Zeichenfolge hinzugefügt wurde (das bedeutet, dass ich die ID anstelle der Kategorieobjekte zugewiesen habe, aber das erklärt nicht, warum keine der oben genannten Funktionen funktioniert) Mongo erkennt als Objekt-ID.

Ähnliche Fragen zu SO ergaben keine Antwort.

Ich benutze den letzten Mongoose (3 etwas) und letzten Mongo, Node.

Aktualisierung:

Ich kann mit der CLI-Funktion Folgendes erreichen:

%Vor%

und interessanterweise kann ich es holen, indem ich das nicht in meinem Code mache - huh?:

%Vor%

Mein Schema ist wie folgt:

%Vor%

Danke

    
cyberwombat 16.09.2012, 22:44
quelle

2 Antworten

0

Was passiert, ist, dass Mongoose jeden Wert, den Sie für einen categories -Wert in Ihrem Product.find -Aufruf verwenden, an eine ObjectId weitergibt, denn so ist categories im Schema definiert. Der categories -Wert des Dokuments, dem Sie zu entsprechen versuchen, hat jedoch einen String-Typ anstelle einer ObjectId, sodass er nicht übereinstimmt.

Damit die Dinge wieder funktionieren, müssen Sie Ihre vorhandenen Dokumente bereinigen, damit sie Ihrem definierten Schema entsprechen.

    
JohnnyHK 16.09.2012, 23:26
quelle
8

Bei Mongoose müssen Sie in einigen Fällen die Zeichenfolge als ID erzwingen. Normalerweise tut dies automatisch für Sie, aber in Ihrem speziellen Fall nicht. Der folgende Codeschnipsel erhält alle Verbindungen mit der übergebenen ID.

%Vor%     
Ash Blue 28.04.2014 20:51
quelle

Tags und Links