2011-11-09 4 views
6

MongoDB 데이터 소스를 분석하여 품질을 확인합니다. 모든 문서 속성 time 포함 된 경우 궁금 해요 : 그래서MongoDB : 쿼리 결과 크기가 컬렉션 크기보다 크다

> db.droppay.find().count(); 
291822 
> db.droppay.find({time: {$exists : true}}).count() 
293525 

가 어떻게 전체 컬렉션에 포함 된 요소보다 지정된 필드를 가지는 많은 요소를 가질 수있는이 두 개의 명령을 사용? 무슨 일있어? 나는 실수를 못 찾는다. 필요한 경우 문서의 예상 구조를 게시 할 수 있습니다.

몽고 셸 버전은 1.8.3입니다. Mongo Db 버전은 1.8.3입니다. 사전에이 문서 항목의 예상 구조


에서

감사 :

{ 
    "_id" : ObjectId("4e6729cc96babe974c710611"), 
    "action" : "send", 
    "event" : "sent", 
    "job_id" : "50a1b7ac-7482-4ad6-ba7d-853249d6a123",  
    "result_code" : "0", 
    "sender" : "", 
    "service" : "webcontents", 
    "service_name" : "webcontents", 
    "tariff" : "0", 
    "time" : "2011-09-07 10:22:35", 
    "timestamp" : "1315383755", 
    "trace_id" : "372", 
    "ts" : "2011-09-07 09:28:42" 
} 
+0

완전히 이상한데, 문서 구조를 업데이트 할 수 있습니까? ... – RameshVel

+0

컬렉션을 삽입, 업데이트 및 읽을 수 있습니다. 예상되는 문서 구조로 응답을 업데이트했습니다. – LoSciamano

+0

너무 "타임 스탬프"를 계산할 수 있습니까? 또한 "존재하는"쿼리에서 두 번 이상 계산 된 개체를 찾을 수도 있습니다 (http://stackoverflow.com/questions/4224773/fast-way-to-find-duplicates-on-indexed-column- in-mongodb). "explain()"출력에 흥미로운 것이 있습니까? 필드의 이름을 변경 했습니까? – mikalai

답변

0

유형의 배열입니다 아마 time 값이 있습니다.

이러한 문서를 찾으려면 db.droppay.find({time: {$type : 4}})을 수행 할 수 있습니다.

+1

좋은 제안! 그러나 불행히도 이것은 문제가 아닙니다. 이 쿼리를 시도하고 빈 결과를 반환합니다 ... – LoSciamano

+0

@LoSciamano 알려 주셔서 감사합니다. – lig

1

내 생각 엔 인덱스에 문제가있는 것 같습니다. 그 droppay에 대한 인덱스가 있습니다 : 시간, 일부 안전하지 않은 작업 인덱스를 업데이트하지 않고 기본 컬렉션을 업데이 트했습니다.

repairing the db을 시도해보고 더 좋은지 알아 볼 수 있습니까?

행운을 비네.

관련 문제