我有一个包含2个数组的文档,我想将一个元素从一个数组移动到另一个数组,我在控制台上尝试了这个,它可以工作:

db.examplecol.update({_id: ObjectId("5056b4b2b9f53a21385076c5")} , {'$pull':{setA:3}, '$push':   {setB:3}})

但我还没有看到一个命令中有2个更新的例子。 我的问题是,这是一个原子操作吗? 如果在这个操作过程中出现问题,我是否有被“拉”但没有被推的“丢失”元素的风险?

#1楼 票数:6 已采纳

基于MongoDB的Atomic Operations文档,并且由于您的操作是在单个文档上,因此操作应该是原子操作。 您应确保使用日志记录,因此如果在更新过程中中断了电源,那么MongoDB将在更新之前恢复到已知的良好状态。

  ask by ojon translate from so

未解决问题?本站智能推荐:

2回复

MongoDB - “与原子操作员投票”的嵌入版本

我阅读了使用原子操作员的投票文章。 在本文中, voters字段是ObjectId的数组。 但我想将voters存储为一系列嵌入式文档,格式如下: 用户可以像Stack Overflow提供的投票系统一样对投票进行upvote或downvote。 因此,例如,当用户想要投票时,有些
1回复

关于Mongodb:原子获取和设置

我是Mongodb的初学者,我有一个像这样的文档: 我想使用多线程将“ name4”,“ name5”,“ nameX” ...添加到“名称” 我的方式: 步骤1:获取所有名称 步骤2:在名称中添加“ nameN”(名称[n] =“ nameN”) 第三步
3回复

原子更新多个文档并返回它们

在MongoDB ,我正在寻找一种以原子方式更新多个文档并在一次调用中返回所有更新文档的方法。 我们可以在MongoDB中执行以下所有操作: 原子更新一个文档并返回更新后的文档: findAndModify或findOneAndUpdate 原子更新多个文档: update(...{mu
1回复

在MongoDB中批量插入原子吗

我正在学习mongodb。 如果我创建批量写入,则此事务是全部还是全部? 我有一个方案,我的用户可以删除他们的朋友。 为此,我需要从两个双向关系中删除。 为了保持一致性,我需要使这些全部或全部消失,因为我不希望2个操作中只有1个成功,因为这会导致不良数据。 阅读文档,我找不到答案
2回复

mongodb update的搜索组件也是原子的吗?

从MongoDB Update文档中,他们谈到了更新操作符是原子的。 如果以下查询在同一时刻被调用五次并且Zugwalt的声誉从零开始,我最终会期望声誉为5: 但是,如果更新查询是这样的呢? 声誉总是只会更新三次,还是会有一些奇怪的竞争条件呢? 我的具体情况是使用活跃用户
2回复

MongoDB:对2个集合进行原子调用(查找+插入)

如何自动获取最新的“回合”记录ObjectId并在插入“存款”集合时使用该记录? 这个帖子的答案说这是不可能完成的: 在MongoDB中,有什么方法可以原子地更新两个集合吗? 这仍然是真的吗? 在过程A中,我想以原子方式查找最新的回合编号(rid)并将其插入到存储中。 竞争条件是
1回复

我如何原子地添加一个条目到MongoDB数组中

我有多个发布/订阅服务器,它们尝试在事件发生时更新MongoDB数据库。 当前,我遇到了一个问题,我需要原子地将条目添加到给定的MongoDB文档数组中,但是当涉及到谁将条目添加到文档中时,就遇到了竞争问题。 我试图使用$addToSet完成添加。 但是,由于一旦数组条目进入数组内就可以对
2回复

如何原子弹出随机元素?

有没有办法用MongoDB像Redis的SPOP那样原子地弹出(删除和检索)随机元素? 我已经阅读了RandomAttribute教程,但是现在我需要确保在提取元素时也将其删除,并且这必须以原子方式进行。 我猜作为一种替代方案,我可以将数据推送到预先排序的数组字段中,但是我真的更希望