_id
インデックスを削除して別のインデックスに置き換えながら、_id
フィールドを設定している理由がわかりません。
- どうやら、 ( documentation ) クラスから
_id
メソッドを拡張することにより、必要に応じてコレクションの を無効にすることができます。もちろん、ドライバーによって が自動的に挿入されないようにする必要もあります (多くのドライバーがこれに対応しているため、一部の人にとっては、これは依然として問題になります)。createCollection
DbClientWithCommands
_id
- 現在のドライバー メソッド
ensureIndex
には、background
指定できるパラメーターがあります (ドキュメント) 。
- プログラムでパディングを制御する方法を知りません。コレクションの時間の経過とともに MongoDB によって自動的に決定されます。ドキュメントを変更していない場合は、ほぼ 1 になると予想されます (パディングがないことを意味します)。統計を確認してください。
_id
を使用せずにコレクションをautoIndexId
作成するには、新しい関数を作成する必要があります。組み込み関数が現在行っているように、上記のコードをコピーして次のようにする必要があります。
bool MyClass::createCollection(const string &ns, long long size,
bool capped, int max, bool disableAutoIndexId, BSONObj *info) {
verify(!capped||size);
BSONObj o;
if ( info == 0 ) info = &o;
BSONObjBuilder b;
string db = nsToDatabase(ns);
b.append("create", ns.c_str() + db.length() + 1);
if ( size ) b.append("size", size);
if ( capped ) b.append("capped", true);
if ( max ) b.append("max", max);
if ( disableAutoIndexId ) b.append("autoIndexId", false);
return runCommand(db.c_str(), b.done(), *info);
}