[MONGODB] 여러 필드와 MongoDB를 텍스트 검색
MONGODB여러 필드와 MongoDB를 텍스트 검색
나는 여러 필드 작업과 MongoDB를 전체 텍스트 검색을 얻기 위해 노력하고있어. 나는 3 개 필드 - 이름, 설명, 카테고리에 인덱스를 설정하고 확인했습니다
document.collection.getIndexes () 이는 returns-
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "document.collection"
},
{
"v" : 1,
"key" : {
"name" : 2,
"description" : 1,
"category" : 1
},
"name" : "name_2_description_1_category_1",
"ns" : "document.collection",
"background" : true,
"safe" : null
}
]
지금, 나는 다음 - 명령을 사용하여 텍스트 검색을 수행하려고하면
db.collection.find( {$text:{$search:'alias'}} ).limit(10)
다음과 같은 오류 메시지를 받았습니다 :
error: {
"$err" : "Unable to execute query: error processing query: ns=document.collection limit=10 skip=0\nTree: TEXT : query=alias, language=, tag=NULL\nSort: {}\nProj: {}\n planner returned error: need exactly one text index for $text query",
"code" : 17007
}
나는 구글과 MongoDB를 문서를 시도했지만 난 아무것도 찾을 수 없습니다.
해결법
-
==============================
1.당신은 당신이 검색 할 필드에 텍스트 인덱스를 생성해야합니다 :
당신은 당신이 검색 할 필드에 텍스트 인덱스를 생성해야합니다 :
db.deals.ensureIndex({ name: "text", description : "text", category : "text" });
은 $ 텍스트 연산자의 문서에서 :
당신이 당신의 세 필드에 생성 된 인덱스는 복합 인덱스가 아닌 텍스트 인덱스입니다. 텍스트 인덱스는 다음과 같이 표시됩니다
{ "v" : 1, "key" : { "_fts" : "text", "_ftsx" : 1 }, "name" : "name_text_description_text_category_text", "ns" : "test.deals", "weights" : { "category" : 1, "description" : 1, "name" : 1 }, "default_language" : "english", "language_override" : "language", "textIndexVersion" : 2 }
from https://stackoverflow.com/questions/24257390/mongodb-text-search-with-multiple-fields by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] WAMP에 MongoDB를 PHP 드라이버 설치 문제 (0) | 2019.12.24 |
---|---|
[MONGODB] 배열 값의 합 MongoDB를 집계 (0) | 2019.12.24 |
[MONGODB] 방법 2 명 MongoDB의 컬렉션을 비교? (0) | 2019.12.24 |
[MONGODB] 필드 MongoDB의 존재 질의 향상 (0) | 2019.12.24 |
[MONGODB] MongoDB를에 $을 모두 사용하여 배열 값을 일치시키기위한 여러 $의 elemMatch 식? (0) | 2019.12.24 |