Chr*_*ald 18
您需要使用MongoDB的findAndModify命令.有了它,您可以自动选择并增加一个字段.
db.seq.findAndModify({
query: {"_id": "users"},
update: {$inc: {"seq":1}},
new: true
});
Run Code Online (Sandbox Code Playgroud)
这将增加users集合的计数器,然后您可以在插入之前将其添加到文档中.由于它是原子的,因此您不必担心会导致ID冲突的竞争条件.
它不像MySQL的auto_increment标志那么无缝,但您通常也可以选择在Mongo驱动程序中指定自己的ID工厂,这样您就可以实现一个使用findAndModify来透明地递增和返回ID的工厂,从而产生更像MySQL的经验.
这种方法的缺点是,由于每个插入都依赖于序列集合上的写锁定,如果您正在进行大量写操作,那么您可能会很快就会出现瓶颈问题.如果您只想保证集合中的文档按插入顺序排序,请查看Capped Collections.