首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB中的并发读写

MongoDB中的并发读写
EN

Stack Overflow用户
提问于 2016-10-05 09:23:24
回答 2查看 3K关注 0票数 1

我有一个集合,在使用max id + 1插入时,我将从中获得最大id。id列在这个集合中是唯一的。

当调用此服务的多个实例时,并发应用程序读取相同的集合并获取最大id。但是,由于相同的集合被访问,相同的max id返回到多个实例,所以在读取该集合中的数据时,我是否可以获得该集合的显式锁,并在用Mongo编写后释放锁?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-05 11:01:17

使用mongoDB方法collections.findAndModify(),您可以创建自己的“获取和增量”查询。

例如:

代码语言:javascript
复制
db.collection_name.findAndModify({
  query: { document_identifier: "doc_id_1" },
  update: { $inc: { max_id: 1 } },
  new: true  //return the document AFTER it's updated
})

https://docs.mongodb.com/manual/reference/method/db.collection.findAndModify/

请查看此页面以获得更多帮助:

sequence.htm

票数 2
EN

Stack Overflow用户

发布于 2016-10-05 11:01:50

试试这种方法

而不是让max id读取集合并将其增量为max id + 1

当读取多个实例时,只需给出文档/集合,并且在更新时遵循以下逻辑

代码语言:javascript
复制
Let us have the below part in a synchronized block, so that no two threads gets the same max id
synchronize() {
  getMaxId from collection
  increase it by 1
  insert the new document
}

请参阅:

https://docs.mongodb.com/v3.0/tutorial/create-an-auto-incrementing-field/

sequence.htm

希望能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39870129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档