我无法删除_id索引,为什么?
当我尝试运行dropIndexes
命令时,它会删除所有索引但不删除_id索引。
执行'db.runCommand'
也不起作用:
> db.runCommand({dropIndexes:'fs_files',index:{_id:1}})
{ "nIndexesWas" : 2, "errmsg" : "may not delete _id index", "ok" : 0 }
不行。
我可以在复合索引中使用包含_id的字段吗?
我在网上找不到任何内容,ensureindex
命令无法执行此操作。
db.fs_files.ensureIndex({'_ id':1,'created':1});
上面的命令刚刚创建了一个新的复合索引。我还没有找到类似的'创建索引'命令。
默认_id索引是唯一索引?
getIndexes
返回它不是唯一索引。
{
"v" : 1,
"key" : {
"_id" : 1
},
"ns" : "gridfs.fs_files",
"name" : "_id_"
},
{
"v" : 1,
"key" : {
"created" : 1
},
"unique" : true,
"ns" : "gridfs.fs_files",
"name" : "created_1"
}
答案 0 :(得分:4)
除了createIndex
之外,还有一个ensureIndex
命令。
E.g。
db.<coll>.createIndex({foo:1})
答案 1 :(得分:3)
您无法删除mongodb中“_id”的索引。
请参阅文档here