2011-11-09 5 views
6

MongoDBのデータソースを分析して品質を確認しています。 すべての文書が属性timeが含まれている場合、私は思ったんだけど:ので、私は全体のコレクションに含まれる要素より指定されたフィールドを持つ複数の要素を持つことができますどのようにMongoDB:クエリ結果のサイズがコレクションのサイズを超えています

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

、この2つのコマンドを使用しましたか?何がうまくいかないの?私は間違いを見つけることができません。 必要な場合は、文書の予想される構造をお知らせします。

Mongo Shellバージョンは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

thats全く奇妙なことに、文書構造を更新することができます.... – RameshVel

+0

私は、コレクションを挿入、更新、および読むことができます。 予想される文書構造で回答を更新しました。 – LoSciamano

+0

「タイムスタンプ」もカウントできるのでしょうか?また、どのオブジェクトが「存在」クエリで複数回カウントされたかを調べることもできます(http://stackoverflow.com/questions/4224773/fast-way-to-find-duplicates-on-indexed-column-イン・モンゴブ)。 "explain()"出力に面白いことがありますか?フィールドの名前を変更しましたか? – mikalai

答えて

0

型アレイであるtime値はおそらくあります。

db.droppay.find({time: {$type : 4}})このような文書を検索するには、

+1

素晴らしい提案!しかし、残念ながら、これは問題ではありません。私はこのクエリを試して、それは私に空の結果を返します... – LoSciamano

+0

@LoSciamanoは私に教えてくれてありがとう。 – lig

1

私の推測では、インデックスの問題です。私はdroppayに:timeというインデックスを持ち、いくつかの安全でない操作がインデックスを更新せずに基になるコレクションを更新したと確信しています。

repairing the dbを試してみるとよいでしょうか。

幸運。

関連する問題