Maison >développement back-end >Golang >Comment créer un index de texte pour les champs imbriqués du même nom
l'éditeur php Strawberry vous présentera comment créer un index de texte dans un champ imbriqué du même nom. Dans les bases de données, nous rencontrons souvent des situations où nous devons effectuer des recherches et des requêtes dans des champs imbriqués. Cependant, la création d'un index de texte devient compliquée lorsqu'il existe plusieurs champs imbriqués portant le même nom. Cet article vous expliquera en détail comment résoudre ce problème et vous proposera une solution. Nous vous guiderons ensuite à travers le processus étape par étape pour créer facilement des index de texte pour les champs imbriqués portant le même nom.
J'essaie de créer un index de texte composé sur 2 champs imbriqués du même nom. La raison pour laquelle j'essaie de faire cela est pour pouvoir effectuer une recherche en texte intégral en utilisant mongo sur les deux champs.
{ "createdat": "2023-01-20t18:39:45.551z", "id": "63cadff13fc409d0b026f219", "userid": "63c13a9ba4c921b78e7d1a3a", "question": { "statement": "what is the atomic number of potassium?", "fileurl": "http://localhost:4000/media/90152d8363424e688ad6e9505194a818.jpg", "mediatype": 2 }, "answer": { "statement": "19" } }
Comme vous pouvez le voir sur l'exemple, question
和 answer
具有相同的嵌套字段 statement
. J'essaie de créer un index de texte pour les questions et réponses
textsearchindexmodel := mongo.indexmodel{ keys: bson.d{ {value: "question.statement", key: "text"}, {value: "answer.statement", key: "text"}, }, options: options.index().setname("textsearchindex"), }
Cela ne fonctionne pas et produit cette erreur :
Failed to create index for flashcard collection:....caused by :: The field 'text' appears multiple times in the index key pattern
p.s : Si vous êtes nouveau, vous pouvez également le télécharger tel quel sur mongodb car le mappage avec le pilote mongodb go est très simple
Veuillez noter qu'une collection peut avoir au plus un texte indice .
Si vous le savez et souhaitez créer un index de texte qui couvre "question.statement"
和 "answer.statement"
alors cela fonctionne.
Votre erreur est que la spécification de l'index : bson .d
表示一个文档,一个有序的属性列表(名称-值对)。这是 bson.e
的一部分,其中 bson. e
est :
type e struct { key string value interface{} }
key
是属性的名称,value
est la valeur de cette propriété. Alors vous l'avez retourné et ça devrait être :
textSearchIndexModel := mongo.IndexModel{ Keys: bson.D{ {Key: "question.statement", Value: "text"}, {Key: "answer.statement", Value: "text"}, }, Options: options.Index().SetName("textSearchIndex"), }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!