mongodb:如何在由复合索引组成的_id索引中添加一个字段
我无法删除id索引,为什么? 当我尝试运行mongodb:如何在由复合索引组成的_id索引中添加一个字段,mongodb,indexing,mongodb-indexes,Mongodb,Indexing,Mongodb Indexes,我无法删除id索引,为什么? 当我尝试运行dropIndexes命令时,它会删除所有索引,但不会删除_id索引 执行'db.runCommand'也不起作用: > db.runCommand({dropIndexes:'fs_files',index:{_id:1}}) { "nIndexesWas" : 2, "errmsg" : "may not delete _id index", "ok" : 0 } 不行 我可以在综合索引中使用包含_id的字段吗? 我在网上找不到任何东西,en
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({“u 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"
}
您不能删除mongodb中“\u id”上的索引
请参阅文档您无法删除mongodb中“\u id”上的索引
请参阅文档除了
ensureIndex
之外,还有一个createIndex
命令
例如
db..createIndex({foo:1})
除了ensureIndex
之外,还有一个createIndex
命令
例如
db..createIndex({foo:1})
因此,我无法为_id索引创建复合索引?您可以使用_id创建复合索引。createIndex()
实际上是在ensureIndex()
内部调用的,用于将索引添加到集合中。不同之处在于ensureIndex()
调用getLastError
以确保在创建索引期间没有错误。因此,最好使用ensureIndex()
因此,我无法为_id索引创建复合索引?您可以使用_id创建复合索引。createIndex()
实际上是在ensureIndex()
内部调用的,用于将索引添加到集合中。不同之处在于ensureIndex()
调用getLastError
以确保在创建索引期间没有错误。因此,最好使用ensureIndex()
,正如泰勒所说,你不能删除索引id。但是你可以创建一个包含_id.-的复合索引,是的_id是默认的唯一索引。正如泰勒所说,你不能删除索引id。但是你可以创建一个包含_id.-的复合索引,是的_id是默认的唯一索引。
db.<coll>.createIndex({foo:1})