我不确定我是否理解您为什么要删除_id
索引并将其替换为另一个索引,但仍设置该_id
字段。
- 显然,如果需要,您可以通过从(文档)类
_id
扩展方法来禁用集合。当然,您还需要确保驱动程序不会自动插入an(许多驱动程序对此,所以对于某些人来说,这仍然是一个问题)。createCollection
DbClientWithCommands
_id
- 当前的驱动方法
ensureIndex
有一个background
你可以提供的参数(文档)
- 我不知道以编程方式控制填充的任何方法。它是由 MongoDB 随时间自动确定的集合。如果您不修改文档,我希望它接近 1(这意味着没有填充)。检查统计数据以确定。
要创建不带_id
和 using的集合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);
}