mongodb:如何将一个字段添加到由复合索引组成的_id索引中

时间:2012-01-04 19:21:36

标签: 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的字段吗?

我在网上找不到任何内容,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"
 }

2 个答案:

答案 0 :(得分:4)

除了createIndex之外,还有一个ensureIndex命令。

E.g。

db.<coll>.createIndex({foo:1})

答案 1 :(得分:3)

您无法删除mongodb中“_id”的索引。

请参阅文档here