mongo_index_memo - y-matsuki/twitter-stream-mongo GitHub Wiki

memo

  • 10,000件を越えたあたりで以下のエラー
> db.getCollection('tweet').find({},{text:1}).sort({timestamp_ms:-1});
error: {
	"$err" : "Runner error: Overflow sort stage buffered data usage of 33556470 bytes exceeds internal limit of 33554432 bytes",
	"code" : 17144
}
  • インデックスを作成する
> db.getCollection('tweet').ensureIndex({ timestamp_ms: 1 });
{
	"createdCollectionAutomatically" : false,
	"numIndexesBefore" : 1,
	"numIndexesAfter" : 2,
	"ok" : 1
}
  • インデックスの確認
> db.getCollection('tweet').find({},{text:1}).sort({timestamp_ms:-1}).explain();
{
	"cursor" : "BtreeCursor timestamp_ms_1 reverse",
	"isMultiKey" : false,
	"n" : 12261,
	"nscannedObjects" : 12261,
	"nscanned" : 12261,
	"nscannedObjectsAllPlans" : 12261,
	"nscannedAllPlans" : 12261,
	"scanAndOrder" : false,
	"indexOnly" : false,
	"nYields" : 95,
	"nChunkSkips" : 0,
	"millis" : 41,
	"indexBounds" : {
		"timestamp_ms" : [
			[
				{
					"$maxElement" : 1
				},
				{
					"$minElement" : 1
				}
			]
		]
	},
	"server" : "ip-172-31-0-37:27017",
	"filterSet" : false
}