kiểm tra trường nào bạn đã xác định chỉ mục văn bản của mình. Ngay bây giờ mongodb chỉ cho phép một chỉ mục văn bản cho mỗi bộ sưu tập. vì vậy nếu bạn đã xác định chỉ mục văn bản trên cột mô tả và cố gắng sử dụng chỉ mục đó trên một số cột khác, bạn nhất định gặp phải lỗi này.
bạn có thể thử truy vấn chỉ mục của mình và xem bạn đã tạo nó trên cột nào. Để nhận các chỉ mục, bạn có thể làm
db.collection.getIndexes()
và nó sẽ trả về một cái gì đó như thế này
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "some.ns"
},
{
"v" : 1,
"key" : {
"_fts" : "text",
"_ftsx" : 1
},
"name" : "desc_text",
"ns" : "some.ns",
"weights" : {
"title" : 1
},
"default_language" : "english",
"language_override" : "language",
"textIndexVersion" : 2
}
]
bây giờ nếu bạn muốn phạm vi trong các cột khác cũng để sử dụng chỉ mục này, chỉ cần bỏ chỉ mục này xuống
db.collection.dropIndex('desc_text');
và sau đó tạo lại nó bằng cách bao gồm tất cả các cột bạn muốn được bao phủ bởi chỉ mục văn bản,
db.collection.createIndex({
title:'text;,
body: 'text;,
desc: 'text',
...... and so on
});