mongodb: как добавить одно поле в индекс _id, составленный из составного индекса - PullRequest
1 голос
/ 04 января 2012

Я не могу удалить индекс _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, 'creat': 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 ]

4 голосов
/ 05 января 2012

В дополнение к ensureIndex также есть команда createIndex.

Например

db.<coll>.createIndex({foo:1})
3 голосов
/ 04 января 2012

Вы не можете удалить индекс "_id" в mongodb.

Пожалуйста, смотрите документацию здесь

...