[MONGODB] 몽구스는 인덱스를 생성하지 않음
MONGODB몽구스는 인덱스를 생성하지 않음
MongoDB의 인덱스를 만들려고. 몽구스 ODM을 사용하여 내 스키마 정의하는 것은 나는 고유 인덱스에 사용자 이름 필드 세트가 아래. 수집 및 문서가 모두 제대로 만들어 얻을, 그것은 작동하지 않습니다 단지 인덱스입니다. 모든 문서는 ensureIndex 명령이 어떤 인덱스를 만들기 위해 시작시 실행되어야하지만 아무도하지되고 있다는 것을 말한다. 나는 그 문제에 경우 호스팅 MongoLab을 사용하고 있습니다. 또한 반복적으로 컬렉션을 떨어졌다. 뭐가 잘못 되었 니.
var schemaUser = new mongoose.Schema({
username: {type: String, index: { unique: true }, required: true},
hash: String,
created: {type: Date, default: Date.now}
}, { collection:'Users' });
var User = mongoose.model('Users', schemaUser);
var newUser = new Users({username:'wintzer'})
newUser.save(function(err) {
if (err) console.log(err);
});
해결법
-
==============================
1.비동기 인덱스를 만들 때 오류가 발생하고 있는지 확인하기 위해 모델의 '인덱스'이벤트를 후크 :
비동기 인덱스를 만들 때 오류가 발생하고 있는지 확인하기 위해 모델의 '인덱스'이벤트를 후크 :
User.on('index', function(err) { if (err) { console.error('User index error: %s', err); } else { console.info('User indexing complete'); } });
또한, 호출하여 몽구스의 디버그 로깅을 사용 :
mongoose.set('debug', true);
디버그 로깅은 당신이 인덱스를 생성하는 것이 만드는 년대 ensureIndex 호출을 표시합니다.
-
==============================
2.몽구스 (신용) "인덱스가 이미 DB에 존재하는 경우,이 교체되지 않습니다"선언합니다.
몽구스 (신용) "인덱스가 이미 DB에 존재하는 경우,이 교체되지 않습니다"선언합니다.
인덱스가 이미의 해당 필드에 존재하기 때문에, 다음 불행히도 간단하게하지 않을 것이다 몽구스 예를 들어, 당신은 이전 {독특한 : TRUE} 인덱스를 정의했다면하지만 당신은 {참 독특한 : 사실, 스파 스}로 변경하려면 DB.
이러한 상황에서, 당신은 당신의 기존 인덱스를 삭제하고 다음 몽구스 신선한에서 새 인덱스를 생성합니다 :
$ mongo > use MyDB > db.myCollection.dropIndexes(); > exit $ restart node app
이 무거운 작업이 때문에 생산 시스템에 신중 것을 조심!
내가 JohnnyHK에서 권장하는 오류보고 기술을 사용하므로 다른 상황에서, 내 인덱스가 만들어지지 않았다. 나는 것을했을 때 나는 다음과 같은 응답을 얻었다 :
E11000 duplicate key error collection
사실하지만 독특한 아니었다 컬렉션의 기존 문서가 있었다, 그래서 몽고는 인덱스를 만들 수 없습니다 : 나의 새로운 인덱스가 제약 조건이 고유의 추가 되었기 때문이었다.
이 상황에서, I 중 하나를 필요로 수정 또는 인덱스를 만들 다시 시도하기 전에, 중복 필드가있는 문서를 제거합니다.
-
==============================
3.그것은 당신의 문제를 해결할 수 있습니다
그것은 당신의 문제를 해결할 수 있습니다
var schema = mongoose.Schema({ speed: Number, watchDate: Number, meterReading: Number, status: Number, openTrack: Boolean, }); schema.index({ openTrack: 1 });
-
==============================
4.나는 작동하지 않는 모델에 인덱스 이벤트를 구부려 때, 나는 지시 콘솔에 오류를 받기 시작했다 "필드 'retryWrites'인덱스 스펙 유효하지 않습니다." 참조 'retryWrites은'내 연결 문자열의 끝에 것을 내 응용 프로그램에서 유일하게. 나는이 제거 응용 프로그램을 다시 시작하고, 인덱스 재 구축에 성공했습니다. 나는 retryWrites이 자리에 백업 응용 프로그램을 다시 시작하고, 오류가 사라졌다했습니다. (나에게 문제를 제공했다) 내 사용자 컬렉션 내가 새 레코드 (몽고 나침반 커뮤니티와) I 톱 만든 새 기록을 만들기 위해 우체부를 사용하여 인덱스가 지금 나타나도록 할 때 비어 있었다. 나는 무엇을 retryWrites 모른다 - 오늘은 내가 그것을 사용하는 첫 날이었다 - 그러나 그것은 내 문제의 근본에있을 것 같았다.
나는 작동하지 않는 모델에 인덱스 이벤트를 구부려 때, 나는 지시 콘솔에 오류를 받기 시작했다 "필드 'retryWrites'인덱스 스펙 유효하지 않습니다." 참조 'retryWrites은'내 연결 문자열의 끝에 것을 내 응용 프로그램에서 유일하게. 나는이 제거 응용 프로그램을 다시 시작하고, 인덱스 재 구축에 성공했습니다. 나는 retryWrites이 자리에 백업 응용 프로그램을 다시 시작하고, 오류가 사라졌다했습니다. (나에게 문제를 제공했다) 내 사용자 컬렉션 내가 새 레코드 (몽고 나침반 커뮤니티와) I 톱 만든 새 기록을 만들기 위해 우체부를 사용하여 인덱스가 지금 나타나도록 할 때 비어 있었다. 나는 무엇을 retryWrites 모른다 - 오늘은 내가 그것을 사용하는 첫 날이었다 - 그러나 그것은 내 문제의 근본에있을 것 같았다.
아, 그리고 내가 왜 사용 했습니까? 그것은 내가 몽고의 아틀라스 클라우드 사이트에서 가져온 연결 문자열에 압정으로 고정되었다. 그것은 중요 보였다. 흠.
from https://stackoverflow.com/questions/12452865/mongoose-not-creating-indexes by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 인터넷없이 몽구스 캔은하지 연결 (0) | 2019.12.19 |
---|---|
[MONGODB] mongo.lock 파일의 사용은 무엇입니까? (0) | 2019.12.19 |
[MONGODB] MongoDB의 : 단일 쿼리의 많은 대 운전자에 $ (0) | 2019.12.19 |
[MONGODB] 합 MongoDB에 의해 기 [중복] (0) | 2019.12.19 |
[MONGODB] MongoDB를 findAndModify 노드 JS (0) | 2019.12.19 |