在mongodb本身並沒有提供auto increment,若要達成與mysql的auto increment相同功能,需要由程式自行控制,或者可以使用findAndModify。
例如:
//在counter collection新增一筆資料,紀錄id目前新增至第幾筆 db.counters.insert({_id:"userId",c:0}); //在counters裡,收尋_id 相等於 userId的資料,並且將c的column加一 var counter = db.counters.findAndModify({query:{_id:"userId",update:{$inc:{c:1}}}}); //新增一筆user db.users.insert( { _id: counter.c, name:"sparrow" } ); //id在加一 counter = db.counters.findAndModify({query:{_id:"userId",update:{$inc:{c:1}}}}); //新增第二筆user db.users.insert( { _id: counter.c, name:"peter" } );
上面的例子,就是在使用一個collection,來存放目前id的最後遞增值。不過這種作法,在效率上較差,如果id不一定需要為連續的,可使用原先的object id,效率會比上面這種方式快很多。(參考此篇blog)