Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mongodb:如何在由复合索引组成的_id索引中添加一个字段_Mongodb_Indexing_Mongodb Indexes - Fatal编程技术网

mongodb:如何在由复合索引组成的_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

我无法删除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({“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})