2013-07-22 2 views
0

내 환경을 오류 : 버전 : 2.4.4, OS : 리눅스 64 비트, 구성 요소 : 복제 세트 + 샤딩MongoDB의 : 복제 세트 + 샤딩이 : 정렬

내가 mongos를 사용하여 내 데이터베이스에 연결할 때 하나의 오류가 나타납니다 :

mongos> db.test.find().limit(500).sort({TIME:-1}) 

error: { 
    "$err" : "BSONObj size: 268823536 (0xF0EB0510) is invalid. Size must be between 0 and 16793600(16MB) First element: \u001f: ?type=38", 
    "code" : 10334 
} 

그러나, 나는 종류의 다른 필드로, 오류가없는 경우 :

mongos> db.test.find().limit(500).sort({C_ID:-1}) 

{ "_id" : "13744759060340298528dbaaa", "C_ID" : "999", "TIME" : ISODate("2013-07-22T06:51:46.034Z"), "SE" : "0", "AREA" : "a21", "CT1" : "1", "CT2" : "1", "S_PT" : 11, "EN_N" : "Test system", "T_ID" : "3946", "EN_T" : "2", "MSG" : "for test64", "EVENT" : "test event39", "S_IP" : "1.2.4.174", "URL" : "URL536" } 
...... 

그래서 나는 shardings 중 하나에 연결 :

sh0:PRIMARY> db.test.find().limit(500).sort({TIME:-1}) 

{ "_id" : "13744759061349b294b309aaa", "C_ID" : "373", "TIME" : ISODate("2013-07-22T06:51:46.134Z"), "SE" : "0", "AREA" : "a2", "CT1" : "1", "CT2" : "8", "S_PT" : 8, "EN_N" : "Test system", "T_ID" : "2654", "EN_T" : "1", "MSG" : "for test0", "EVENT" : "test event38", "S_IP" : "1.2.4.193", "URL" : "URL829" } 
... 

누구나 내게 아이디어를 제공합니까?

감사합니다.

+0

sharded 환경에서 shard 키를 쿼리의 매개 변수 중 하나로 전달해야합니다. 그렇지 않으면 mongos가 모든 샤드를 쿼리하고 결과 재현 인 결과를 결합합니다. C_ID가 샤드 키인가요? – Jayz

+0

예, C_ID는 샤드 키입니다. –

답변

0

패스 샤드 키를 누릅니다. 이것은 권장 사항이 아니므로 따라야하는 규칙입니다. 또한 쿼리에 필요한 모든 매개 변수를 색인화하십시오. 여러 매개 변수가 필요한 조회의 경우 복합 색인을 작성하십시오. 참고 : 샤드 키는 모든 쿼리의 일부이므로 단일 인덱스는 거의 사용되지 않으므로 복합 키만 만들어야합니다. 예를 들어 TIME을 기준으로 쿼리하려면 쿼리에서이 순서대로 매개 변수를 전달하면 복합 인덱스 - {C_ID, TIME}을 순서대로 작성해야합니다.

0

TIME 필드의 색인이 생성 되었습니까? 모든 쿼리에

지수는

db.test.ensureIndex({TIME : -1}) 
+0

색인이 생성되지 않았습니다. 시도를하겠습니다. 답장을 보내 주셔서 감사합니다! –

관련 문제