node.js - 如何计算 Node 内 MongoDB 集合中的文档数量?

标签 node.js mongodb

情况很奇怪,我尝试了很多解决方案,但似乎无法破解。

我发现的很多资源只包括 mongo 控制台命令,我不确定你如何在 Node.js 中编写它。

我试图解决这个问题的原因是我试图让每个文档的“id”从最后一个文档开始迭代,因此尝试查找集合中的文档数量,添加一个,然后使用该数字作为新文档的“id”。

最佳答案

要获取集合中的文档数量,请使用db.collection.find({}).count()

但是,您尝试做的事情是行不通的。当您对数据库进行大量并行访问时,多个线程可能会同时执行此操作,接收相同的计数,从而插入具有相同 id 的文档。根据CAP theorem ,像MongoDB这样的分布式数据库无法提供这种一致性。

你应该做的是依赖 MongoDB ObjectId作为文档的唯一标识符。当您没有为 _id 提供自己的值时,MongoDB 会自动为每个文档生成这些值。 ObjectId 是全局唯一的(对于任何实际目的而言都足够唯一),因此您不会遇到任何冲突。它们也以时间戳开头,因此当您按 _id 排序时,您会得到大致的时间顺序(如前所述,分布式系统不可能提供严格时间顺序)。

根据经验,每当您在 SQL 中使用 AUTO_INCRMENT 时,您都可能会在 MongodDB 中使用 ObjectId。

关于node.js - 如何计算 Node 内 MongoDB 集合中的文档数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33669811/

相关文章:

mysql - SequelizeEagerLoadingError : associated not working in sequelize

java - bean 的空属性会被插入到 MongoDB 中吗?

php - 新的 MongoDB 安装,单次插入导致重复文档

performance - MongoDB 多键索引写入性能下降

ruby - 如何等待生成的进程

javascript - 使用nodejs mongodb驱动程序和async.js在mongodb中插入多条记录

node.js - 如何让Webpack和Node协同工作?

node.js - 如何在 sails.js 模型中添加具有整数数据类型数组的属性?

node.js - 如何在单个 Node.js 机器人中集成 LUIS 和 QnA Maker 服务?

node.js - 无效的架构配置 : `model` is not a valid type within the array `characters`