2014-06-18 7 views
0
rs0:PRIMARY> db.oplog.rs.find({ }, { ts: 1}).sort({$natural : 1}).limit(1) 
{ "ts" : Timestamp(1403030678, 90) } 
rs0:PRIMARY> db.oplog.rs.find({ "ts" : Timestamp(1403030678, 90)}).count() 
0 

최근까지 mongo 커넥터를 평화롭게 사용했습니다. mongo-connector가 실패한 이후 DB를 수리했습니다. 디버깅에서 우리는 Timestamp에 기반한 oplog에 대한 쿼리가 실패 함을 발견했습니다. find에 의해 반환 된 'ts'에 대한 직접 일치로 쿼리를 단순화했습니다. 놀랍게도 mongo는 방금 반환 한 문서를 찾지 못했습니다. 무슨 일이 벌어 질지에 대한 제안이 있으십니까? 우리는 mongo db 2.4.6을 사용하고 있습니다.문서가 존재하더라도 oplog에 대한 몽고 DB 쿼리가 실패했습니다.

우리는이 쿼리가 올바른지 확인하기 위해을 보았습니다.

답변

0

당신은 기본적으로이 타격하고 있습니다 : Index on ts field in oplog.rs is not updated

MongoDB의 복제가 oplog 덮인 수집에 데이터를 삽입하는 특별한 최적화 방법을 사용합니다. 최적화의 일부는 콜렉션의 색인을 갱신하지 않는다는 것입니다.

+0

ts의 색인 삭제는 저에게 효과적이었습니다. – randombulbs

+0

RS에서 말 그대로 모든 것을 느리게하는 완벽한 방법입니다. 색인은 재미를 위해 또는 단지 있기 때문에 존재하지 않습니다. –