jjzjj

findAndModify

全部标签

mongodb - FindAndUpdate 与 MongoDB 中的更新

我正在使用Update和FindAndModify,但现在我读到Update和FindAndModify是原子的(http://docs.mongodb.org/manual/tutorial/model-data-for-atomic-operations/),那么如果两者都可以通过查询项目并更新它来完成相同的工作,那么有什么区别呢?我在StackOverflow上找到了几个答案,但没有一个提到更新也是原子的:What'sthedifferencebetweenfindAndModifyandupdateinMongoDB? 最佳答案

node.js - findAndModify 或 findOneAndUpdate - "is not a function"

首先,哪个最好?findAndModify或findOneAndUpdate或findByIdAndUpdate?在我的例子中,我有一张这样的表:序列键{"_id":"invoice","seq":NumberInt(1)},{"_id":"receipt","seq":NumberInt(1)}我想找到发票的序列号,加1并保存。(然后用那个号码在发票表中保存真正的发票记录)但我无法让它工作,我不断得到TypeError:seqkeysTable.findAndModifyisnotafunction这是我的模型:varmongoose=require('mongoose');varS

python - pymongo: findandmodify - 返回 "no such command"

我相信pymongo(或者至少是文档)中存在一个错误,它导致无法运行findandupdate查询。事情是这样的。当我运行时:result=db.command({'findandmodify':'my_collection','query':{'foo':'bar'},'update':{'$set':{'status':'queued'}},})实际发送到服务器的查询是:{'query':{'foo':'bar'},'findandmodify':'my_collection',…}请注意,query参数是第一个,findandmodify是第二个。但这会导致服务器抛出:Opera

Mongodb findAndModify原子性

我想知道如何引用返回的文档属性从查找并在修改中使用它。前任。:vartotalNoOfSubjects=5;db.people.findAndModify({query:{name:"Tom",state:"active",rating:{$gt:10}},sort:{rating:1},update:{$set:{average:/totalNoOfSubjects}}});我的理解是findAndModify锁定文档,因此我想使用在查找中找到的属性在修改中执行更新。这将使操作原子的。我想知道mongo是否支持它。 最佳答案 不,

mongodb - 如何使用 cl-mongo 运行 findAndModify?

我正在尝试在MongoDB中实现一个简单的消息队列。但是我无法让findAndModify与cl-mongo一起工作。在mongoshell中我可以这样做(为了便于阅读而重新格式化):>db.queue2.insert({"data":"test","date_created":newDate(),"date_updated":null,"date_completed":null,"state":0})WriteResult({"nInserted":1})>db.queue2.findAndModify({query:{"state":0},update:{$inc:{"state"

来自多个客户端的 MongoDB findAndModify

我的MongoDB集合用作作业队列,有3台C++机器从这个集合中读取数据。问题是这三个人不能执行相同的工作。所有作业只需完成一次。我通过使用“isDone:False”在集合中搜索所有记录来获取所有未完成的作业,然后更新此文档“isDone:True”。但是,如果两台机器同时找到相同的文件,它们将同时进行相同的工作。我怎样才能避免这种情况?编辑:我的问题是-findAndModify真的能解决这个问题吗?(看完AwaytoensureexclusivereadsinMongoDb'sfindAndModify?) 最佳答案 是的,f

java - 并发 findAndModify 查询成功更新同一文档

我有一个用Java编写并使用MongoDB3.4副本集的任务worker,该副本集运行许多线程,每个线程基本上都在执行此操作。运行任务通过在MongoDB中更新该任务的文档来表示任务已完成运行查询以查看是否完成了这组任务中的所有任务如果是,继续下一阶段的处理否则什么都不做如您所见,这里存在竞争条件;多个任务几乎可以同时完成,并认为它们是最后一个要完成的任务。我想使用MongoDB来确保只允许其中一个任务开始下一阶段的处理。我有以下代码,旨在确保这些任务中只有一个可以继续(我正在使用Jongo与MongoDB交互)。Chipsetmodified=chipsets.findAndModi

初始值不为零的 Mongodb 计数器

我想创建一个从1000开始的计数器。即如下所示插入一个mongodb文档如果文档不存在,则创建值为1000如果文档已经存在,则增加值+1以下不起作用:environment_data:PRIMARY>db.test.findAndModify({query:{key:"mycounter"},update:{$inc:{value:1},$set:{value:1000}},upsert:true})Error:findAndModifyFailedfailed:{"errmsg":"exception:Cannotupdate'value'and'value'atthesametim

mongodb - 如何在mongodb中返回弹出的元素

我想从数组中弹出一项,并获取该元素。在mongodb中可以吗?我没有找到这样的信息http://docs.mongodb.org/manual/reference/operator/pop/ 最佳答案 这是不可能的。MongoDB不会返回您之前使用正常更新获得的文档的任何部分,据说它可以返回完整文档,而不仅仅是findAndModify(http://docs.mongodb.org/manual/reference/command/findAndModify/)上弹出的元素,然后您可以过滤掉第一个或最后一个元素。注意:我应该警告f

node.js - 如何从 Node 中的 Mongo 访问 `findAndModify` 方法(使用 Mongoose)?

这是/models/joke.js:varmongoose=require('mongoose'),database=mongoose.connect('localhost','joke',{server:{poolSize:3}});varjokeSchema=mongoose.Schema({content:String,upvotes:{type:Number,default:0},downvotes:{type:Number,default:0},views:{type:Number,default:0},published:{type:Boolean,default:true