2014-11-27 2 views
0

친구의 앱이 MongoDB 색인을 사용하도록 설계되었습니다. 그는 로컬 개발하는 동안 모든 것이 괜찮다고하지만 그는 호스팅 제공 업체에 자신의 코드를 이동하면 코드가 실패 :MongoDB에서 색인을 만들 수 없습니다. 2.4

db.createIndex('collections', {title:"text", description:"text"}, function(err, indexName) { 
    console.log("8. index name: " + indexName); 
}); 

오류 메시지가

제공이가 말한다 "인덱스 생성 실패"입니다 그들 때문에 MongoDB를 2.6으로 업그레이드하지 마십시오. 버전은 2.4이며 업그레이드 할 계획이 없습니다. MongoDB 웹 사이트를 살펴 보았지만, Indexes 섹션에서는 2.6까지는 인덱스를 사용할 수 없다고 언급하지 않았습니다. 2.6에 몇 가지 추가 기능이 있다고 말합니다. 여기에서 무슨 일이 일어나고 있는지,이 코드에 문제가 있거나 정말로 MongoDB가 2.6까지 인덱스를 지원하지 않는다면, 어떻게 될 수 있습니까? 아니면 우리가 뭔가 잘못하고있는 것입니까? MongoDB 2.4로 빠른 검색을 할 수있는 옵션은 무엇입니까?

+1

친구는이 기능을 사용하지 않아야합니다. v1.8 이후로 더 이상 사용되지 않습니다. - http://docs.mongodb.org/v2.4/reference/method/db.collection.createIndex/ – Lix

답변

0

여기에 약간의 혼란이 있습니다. MongoDB 2.4. *에는 색인이 있습니다. 색인 생성은 2.6의 기능이 아닙니다. 따라서 문제는 아닙니다. 두 가지를 시도해 보겠습니다. 먼저 mongo 셸에서 수동으로 색인을 작성하십시오. 아마도 오류 메시지가 더 의미가 있습니다. 도움이되지 않는다면 공급자에게 mongod 로그 파일을 보도록 요청하십시오 - 인덱스 생성 시도 작업이 분명히 표시되며, 실패한 이유는 무엇입니까? 마지막으로 텍스트 검색이 활성화되지 않았기 때문에 실패 할 수 있습니다. MongoDB 2.4 문서에서는 "textSearchEnabled"명령 줄 매개 변수가 mongod 프로세스를 시작할 때 true로 설정되어야한다고 언급합니다.

희망이 있습니다.

+0

Downvoted는 질문에 대답하지 않습니다. –

1

Lix가 말했듯이, createIndex는 더 이상 사용되지 않습니다. 대신 ensureIndex를 사용해야합니다

collection.ensureIndex({title:"text", description:"text"}, function(err, indexName) { 
    //handle error and check index name 
}) 

기억하시기 바랍니다이 아닌 두 개의 별도의 인덱스를 한 번에 생성 화합물 인덱스이라고

여기

대한 추가 정보 : nodejs의 인덱스에 대한 link
정보 (I 당신은 콜백 : link2

편집을 사용 당신은 nodejs를 사용 assumue

의 문서에 "MongoDB 2.4에서는 텍스트 색인을 만들고 텍스트 검색을 수행하기 위해 텍스트 검색 기능을 수동으로 활성화해야합니다."
링크 및 출처 : indexes

관련 문제