mongodbのソート・・・で。
TwitterでSearchの結果をDBに保存していたらとあるコレクションだけ異常に増えていた。
最初、sort(array('createdatunix'=>-1) として最後の日時を取得していた。
と、しばらく放置。
気づいたらやたら増えてるコレクションが・・・。
created_atの指定がよくわかっていないのもあるけど。
再度 sort(array('createdatunix'=>-1)でとってきた日時を確認。
昇順の分もあれば降順もある
mongodbでの昇順は、1 降順は -1
コレクションによる昇順のちがい
コレクションA 降順 $obj = $collection->find()->sort(array('created_at'=>-1))->limit(1); string(19) "2012-02-15 18:59:03"
コレクションA 昇順 $obj = $collection->find()->sort(array('created_at'=>1))->limit(1); string(19) "2012-02-15 13:58:29"
コレクションB 降順 $obj = $collection->find()->sort(array('created_at'=>-1))->limit(1); string(19) "2012-02-16 05:01:55"
コレクションB 昇順 $obj = $collection->find()->sort(array('created_at'=>1))->limit(1); string(19) "2012-02-17 09:05:02"
createdatをunixtimeスタンプにしてcreatedat_unixとして保存
原因不明・・・・
これまでに重複したツイートを削除
参考:ぐるなび位置情報をMongoDBに保存 http://labs.infoalive.com/mongodb/212
db.gnavi.count(); 122726
db.gnavi.dropIndexes(); db.gnavi.ensureIndex( { name: 1 , address: 1 } , { unique: true, dropDups: true } ); db.gnavi.count(); 58448 db.gnavi.dropIndexes(); db.gnavi.ensureIndex( { loc: "2d" } );
うまくいかなかったのでループで消した