草庐IT

原子钟

全部标签

MongoDB 链接和原子操作

假设有两个独立的集合:城市{name:"NYC",area:"1223",people:[1,2,3]}和人{personId:1,name:"abc"}如您所见,我们在城市中链接了人的ID(RDBMS中的一种外键)。现在,如果我决定删除ID=1的人,那么我想更新城市中的人员数组,就像RDBMS中的级联删除操作一样,我知道我们没有this级联删除类型的操作,并且由于我们在MOngoDB中没有事务,如果我们以某种方式无法对城市执行“级联删除”类型的操作,则数据库有可能处于不一致状态。如何确保整个“删除人+城市级联删除”作为MongoDB中的原子操作?如果不能,那么我们是否更喜欢嵌入而不是

mongodb - findAndModify 对嵌入文档的原子性

在mongodb手册上有一个用于对单个文档进行原子操作的example。book={_id:123456789,title:"MongoDB:TheDefinitiveGuide",available:3,checkout:[{by:"joe",date:ISODate("2012-10-15")}]}手册指出以下操作是原子的:db.books.findAndModify({query:{_id:123456789,available:{$gt:0}},update:{$inc:{available:-1},$push:{checkout:{by:"abc",date:newDate(

mongodb - 批量插入在 MongoDB 中是原子的吗

我正在学习mongodb。如果我创建一个批量写入,这个事务是全有还是全无?我有一个场景,我的用户可以删除他们的好友。FRIEND1|FRIEND2UserBUSERAUserAUSERB为此,我需要从两个双向关系中删除。为了保持一致性,我需要这些操作全部或全无,因为我不希望2个操作中只有1个成功,因为这会导致错误数据。阅读文档我找不到答案:https://docs.mongodb.org/manual/core/bulk-write-operations/ 最佳答案 db.collection.initializeOrderedBu

mongodb - Mongoose:原子 FindOne-Or-Insert(),如果找到则不更新现有实例

在Mongoose中,我正在寻求以原子方式执行Model.FindOne-Or-Insert()的方法,与当前可用的功能和签名类似Model.FindOneAndUpdate()除非实例存在(即匹配filter),否则不要使用提供的object进行更新,而是按原样返回实例,如果不存在(即不匹配filter)然后插入object并返回新实例。我找不到使用Model.FindOneAndUpdate()的方法不要通过尝试对其选项的变化来执行对现有实例的更新,并且不向object提供字段,如果实例存在则不希望更新。因此,我当前的非原子解决方法是Model.FindOne()如果没有找到,则执

初学正点原子Ministm32TFTLCD 显示实验

本章我们将介绍ALIENTEK2.8寸TFTLCD模块,该模块采用TFTLCD面板,可以显示16位色的真彩图片。在本章中,我们将使用MiniSTM32开发板上的LCD接口,来点亮TFTLCD,并实现ASCII字符和彩色的显示等功能,并在串口打印LCD控制器ID,同时在LCD上面显示。本章分为如下几个部分:1TFTLCD简介2硬件设计3软件设计一、TFTLCD简介本章我们将通过STM32的普通IO口模拟8080总线来控制TFTLCD的显示。TFT-LCD即薄膜晶体管液晶显示器。其英文全称为:ThinFilmTransistor-LiquidCrystalDisplay。TFT-LCD与无源TN-

mongodb - MongoDB 中的原子性和 CAS 操作

目前我正在尝试了解如何在mongodb中正确实现CAS操作以支持乐观锁定。我发现mongodb中的更新是原子的,但我不确定这意味着什么(只有文档重写是原子的或所有更新周期,包括搜索相应文档及其重写,是原子的?)。让我们考虑以下示例。某些文档存在于某些集合中,_id值设置为123,属性cas_val设置为10。第一个客户想要更新_id等于123到11的文档的cas_val。第二个客户端想要将_id等于123的文档的cas_val更新为11。两个客户端同时运行,并且可以交错运行。那么,如果没有对_id123的文档执行其他更新,both操作是否有可能成功?附言mongodb中是否有一些针对乐

mongodb - 如何使用原子操作增加 mongoDB 文档中的 Datetime 字段?吗啡也一样吗?

嗯。就是这样。我有一个包含Datetime字段的文档。现在我需要执行原子操作,这将在某个时期增加这个值,例如。一天。怎么做?最终我需要通过morphia来做到这一点,如果您知道如何,请分享。 最佳答案 日期是自Unix纪元(MongoDBDates)以来的毫秒数。因此,您可以查询包含要递增日期的文档,并添加(inc/decinMorphia)您需要的毫秒数-例如一天。 关于mongodb-如何使用原子操作增加mongoDB文档中的Datetime字段?吗啡也一样吗?,我们在StackOv

MongoDb更新原子性

我和一个friend讨论过MongoDb及其原子性问题,我想知道他是对的..有人告诉我,MongoDb在update期间执行两个原子操作:它正在删除现有文档(第一个原子操作);并插入一个新的(第二个原子操作)。这意味着在一小部分时间内,文档是空的。尽管这对我来说听起来不太合理,但有谁能确定这是真的还是假的?非常感谢您的回复,如果有人可以指向一些在线文档来阅读它,我们将不胜感激。编辑:拼写 最佳答案 MongoDB对所有变异操作使用全局写锁(2.2之前的每个服务器和2.2中的每个数据库)。这意味着无论更新的实现细节如何,从客户端的角度

node.js - 在 mongoose 中,model.save 是增量的原子还是我应该始终使用 $inc?

我需要在MongoDB和mongoose中增加记录的likes字段,但我有点“担心”这些操作的原子性,因为这应该是并发安全的:Post.findById(id,function(err,post){post.update({$inc:{likes:1}});});对比Post.findById(id,function(err,post){post.likes++;post.save()});它们是否提供相同的安全结果?想一想我什至必须减少记录的点赞数(例如,如果用户再次点击点赞按钮)Post.findById(id,function(err,post){post.update({$in

php - map 中的原子性/减少新记录 (MongoDB)

情况是这样的:我有一个MongoDB集群和一个网络应用程序,它执行相当密集的Map/Reduce查询。此查询在cron作业中定期(每5分钟)发生一次,结果存储(使用$merge)到一个集合中。有效方法:目前,查询对其集合中的每条记录执行。所述集合正在慢慢增长到数百万行,并且每次运行时都需要更长的时间。显而易见的解决方案是对新记录运行Map/Reduce,并对旧存储值使用reduce函数来计算正确的值。MongoDB很棒,它允许您指定一个reduce选项而不是merge来做到这一点。我不明白的是:如何仅对初始集合中的新记录正确执行M/R。我看到了两种可能的解决方案,但都不好。想法?我可以