努力实现这一点:
为一些事情提供序列计数器。
我已经将函数存储在我的数据库中,但我无法在没有错误的情况下调用它:
var model_id = db.eval('getNextSequence("model")');
回报:
对象 # 没有方法 'getNextSequence'
这是因为和尚不支持通过 eval 使用 db 函数吗?
努力实现这一点:
为一些事情提供序列计数器。
我已经将函数存储在我的数据库中,但我无法在没有错误的情况下调用它:
var model_id = db.eval('getNextSequence("model")');
回报:
对象 # 没有方法 'getNextSequence'
这是因为和尚不支持通过 eval 使用 db 函数吗?
该getNextSequence
方法是您的应用程序代码的一部分,并在您的应用程序中运行,而不是在数据库中。在来自 mongodb 文档的示例中,该应用程序是 mongo shell,它基本上是一个简单的 javascript 包装器,您可以在其中轻松声明自己的方法。
无论如何,实现可靠、无间隙的计数器并非易事,除非绝对需要,否则应避免使用:
简而言之,如果您在单个帐户/租户中使用此类计数器,则这些计数器是可以的,其中帐户的用户是人类。如果您的帐户很大或者您有 API 客户端,那么事情就会变得一团糟,因为它们可能会在几秒钟内爆裂并执行 10,000 次插入,从而导致大量冲突。
永远不要使用增量键作为主键。