Mam następujący schemat:Mongoose indeks zagnieżdżony tekst na polu schematu
const Schema = ({
metadata: {
title: String,
...
},
...
});
i szukam, aby utworzyć indeks tekstu na metadata.title
. Mogę utworzyć indeks tekstowy z powodzeniem na każdej własności pierwszego poziomu, ale mam problem z zagnieżdżonym tytułem.
Próbowałem poniższy kod, bez skutku. Czy moja składnia jest nieprawidłowa? Nie miałem szczęścia z docs ...
Schema.index({ 'metadata.title': 'text' });
Wyszukany:
Schema
.find(
{ $text : { $search : req.params.query } },
{ score : { $meta: "textScore" } })
Rozpoczęła się nagroda- ale okazało się, że obecna odpowiedź rozwiązuje problem. Tam nagradza nagrodę. –
Twoja pierwotna próba 'Schema.index ({'metadata.title': 'text'});' jest właściwym sposobem na zrobienie tego i działa dobrze, kiedy go wypróbuję. Aktualnie zaakceptowana odpowiedź utworzy tradycyjny indeks, a nie indeks tekstowy. Używanie schematu 'Schema' dla twojego schematu (i twojego modelu) jest nieco mylące, ponieważ naprawdę powinieneś zachować nazwę tego identyfikatora jako konstruktora' Schema'. – JohnnyHK
Taaaaaaaaaaaaaaaaaaaaaaaaaaaa w mój kod, użyłem Schema tutaj jako placeholder ... przepraszam. I tak, moja oryginalna próba działa tak jak powiedziałeś ... komu nagrodzę nagrodę? –