سؤال

I can't remove the _id index, why?

When I try running the dropIndexes command, it removes all indexes but not the _id index.

Doing 'db.runCommand' doesn't work either:

> db.runCommand({dropIndexes:'fs_files',index:{_id:1}})
{ "nIndexesWas" : 2, "errmsg" : "may not delete _id index", "ok" : 0 }

not ok.

Can i use a field including _id in a composite index?

I couldn't find anything online, the ensureindex command can't do it.

db.fs_files.ensureIndex({'_id':1, 'created':1});

the above command just created a new composite index. i haven't found some similar 'create Index' command.

the default _id index is a unique index?

the getIndexes returns it's not a unique index.

{
     "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"
 }
هل كانت مفيدة؟

المحلول

You cannot delete the index on "_id" in mongodb.

Please see the documentation here

نصائح أخرى

There is a createIndex command in addition to ensureIndex also.

E.g.

db.<coll>.createIndex({foo:1})
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top