使用计数器集合在node-mongodb-native中自动增量

有没有什么方法可以像node-mongodb-native文档中描述的那样实现计数器集合 ?

我试图避免通过嵌套超过9000callback(恕我直言,这听起来不整洁,而不是优雅),但写这个本地驱动程序的好人拒绝执行同步/阻塞调用。

原生驱动程序是否提供了一些方法来调用用户定义的函数并在查询过程中使用它们的返回值? 或者可以有一个替代方法提取序列计数….也许完全从一个ObjectID()

有任何想法吗?

编辑:
这不是用于_id字段的(这由db.coll.save(x)
我在一个集合中有不同types的文档。 如果你知道我的意思,每一个都需要自己的“types序列”或“types序列”。

我已经实现了这个(加上其他的东西)与afew嵌套调用,如下所示。 doc是来自客户端的JSON.parse 。 我必须用_id (按db.coll.savesorting)和typeserial (当前按db.coll.countsorting,如下所示)将此doc返回给客户端。

  ///more nesting Async calls above. db.collection('dox').count( { "type" : doc.type } , function( err , count ) { ///{some err checking code here} doc.typeseq = (1+count); db.collection('dox').save( doc , function( err , doc ) { ///{more code here} ///Finally return JSON.stringified doc with new info/members to client-side } ); } ); 

我只想知道是否有一个更优雅,反asynchronous的方式让我的doc.typeserial

我基本上会打我的评论作为答案:

你只需要两个callback,一个获取预定义的primefaces检索_id,另一个实际插入你的文档。 一旦你有你的自动增量_id它应该总是这样插入的文件是唯一的

更多地解释一下,当你使用findAndModify$inc并且从计数器集合返回时, _id应该是唯一的,即该脚本的运行以及随之而来的文档插入。 基本上这种方法没有竞争条件。

这意味着你将需要一些像insertWithAI这样的父函数,它将执行使用findAndModify的第一个callback来链接后面的插入callback,但在一天结束时,你只需要两个callback。

我实施了自动增量与“乐观循环”与asynchronous的帮助,而其中工作正常:

使用mongoDB创build递增数字