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
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.