javascript - 如何使用monk/node.js调用mongodb函数?

标签 javascript node.js mongodb monk

努力实现这一点:

http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/#auto-increment-counters-collection

为一些事情提供序列计数器。

我已经将函数存储在我的数据库中,但我无法在没有错误的情况下调用它:

var model_id = db.eval('getNextSequence("model")');

返回:

对象#没有方法“getNextSequence”

这是因为monk不支持通过eval使用db函数吗?

最佳答案

getNextSequence 方法是应用程序代码的一部分,并且在您的应用程序中运行,而不是在数据库中运行。在 mongodb 文档的示例中,该应用程序是 mongo shell,它基本上是一个简单的 javascript 包装器,您可以在其中轻松声明自己的方法。

无论如何,实现可靠、无间隙的计数器并不是一件小事,除非绝对需要,否则应该避免:

  1. 如果后续插入由于客户端崩溃、网络分区等原因而失败,则在插入之前递增计数器会导致间隙。
  2. 插入后增加计数器需要 optimistic insert loop (但不需要显式计数器,如链接中所示)。这更可靠,但对于并发编写器来说效率很低,因为它执行大量查询和失败的更新。

简而言之,如果您正在使用此类计数器,例如在单个帐户/租户内,其中帐户的用户是人类。如果您的帐户很大或者您有 API 客户端,事情就会变得困惑,因为它们可能会爆发并在几秒钟内执行 10,000 次插入,从而导致大量冲突。

切勿使用增量键作为主键。

关于javascript - 如何使用monk/node.js调用mongodb函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28638403/

相关文章:

javascript - 获取网站中元素的“默认”属性

javascript - APEX 使用 javascript 设置项目值和 session 状态

javascript - 网页抓取 : iterate through every page of web app using puppeteer

javascript - 检查 mongodb 服务器是否同步事件

java - MongoDB 的 Spring 数据

javascript - VueJs + Laravel - 类按钮组件

javascript - 在 Nodejs 中将日期时间字符串转换为特定模式

javascript - Heroku 无法运行 Node ES6 代码

node.js - nginx ws 无效的 URL 前缀

node.js - 在 express.js 中连接到 Mongodb-Native-Driver