繁体   English   中英

您如何计算Node内MongoDB集合中的文档数量?

[英]How do you count the amount of documents in a MongoDB collection within Node?

奇怪的是,我尝试了许多解决方案,但似乎无法破解。

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

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

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

但是,您尝试执行的操作将不起作用。 当您对数据库有很多并行访问时,则可能多个线程同时执行此操作,接收到相同的计数,因此将插入具有相同ID的文档。 根据CAP定理 ,像MongoDB这样的分布式数据库无法提供这种一致性。

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

根据经验,只要在SQL中使用AUTO_INCREMENT ,就可能在MongodDB中使用ObjectId。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM