editor php Strawberry akan memperkenalkan kepada anda cara membuat indeks teks dalam medan bersarang dengan nama yang sama. Dalam pangkalan data, kita sering menghadapi situasi di mana kita perlu mencari dan membuat pertanyaan dalam medan bersarang. Walau bagaimanapun, mencipta indeks teks menjadi rumit apabila terdapat berbilang medan bersarang dengan nama yang sama. Artikel ini akan menerangkan secara terperinci cara menangani masalah ini dan memberi anda penyelesaian. Seterusnya, kami akan membimbing anda melalui proses langkah demi langkah untuk membuat indeks teks dengan mudah untuk medan bersarang dengan nama yang sama.
Saya cuba mencipta indeks teks gabungan pada 2 medan bersarang dengan nama yang sama. Sebab saya cuba melakukan ini adalah supaya saya boleh melakukan carian teks penuh menggunakan mongo pada kedua-dua medan.
{ "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" } }
Seperti yang anda lihat daripada contoh, question
和 answer
具有相同的嵌套字段 statement
. Saya cuba mencipta indeks teks untuk pernyataan soalan dan jawapan
textsearchindexmodel := mongo.indexmodel{ keys: bson.d{ {value: "question.statement", key: "text"}, {value: "answer.statement", key: "text"}, }, options: options.index().setname("textsearchindex"), }
Ini tidak berfungsi dan menghasilkan ralat ini:
Failed to create index for flashcard collection:....caused by :: The field 'text' appears multiple times in the index key pattern
p.s: Jika anda baru pergi, anda juga boleh memuat naiknya seperti di mongodb kerana pemetaan kepada pemandu mongodb go adalah sangat mudah
Sila ambil perhatian bahawa koleksi boleh mempunyai paling banyak satu teks indeks .
Jika anda tahu ini dan ingin mencipta indeks teks yang meliputi "question.statement"
和 "answer.statement"
maka ini berfungsi.
Ralat anda ialah spesifikasi indeks: bson .d
表示一个文档,一个有序的属性列表(名称-值对)。这是 bson.e
的一部分,其中 bson. e
ialah:
type e struct { key string value interface{} }
key
是属性的名称,value
ialah nilai atribut ini. Jadi anda terbalikkan dan ia sepatutnya:
textSearchIndexModel := mongo.IndexModel{ Keys: bson.D{ {Key: "question.statement", Value: "text"}, {Key: "answer.statement", Value: "text"}, }, Options: options.Index().SetName("textSearchIndex"), }
Atas ialah kandungan terperinci Cara membuat indeks teks untuk medan bersarang dengan nama yang sama. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!