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" } );

うまくいかなかったのでループで消した