2016-04-21 69 views
5

MongoDB 2.5驱动程序有DBCollection.findAndModify()方法,但MongoCollection错过了这种方法。经过一番搜索,我发现findOneAndUpdate()现在具有相同的作用。 但是这种方法有不同的签名,不懂如何使用它。这是命令我想执行如何在MongoCollection Java驱动程序3中执行MongoDB findAndModify查询?

db.COL1.findAndModify({ 
    query: { id: 2 }, 
    update: { 
    $setOnInsert: { date: new Date(), reptype: 'EOD' } 
    }, 
    new: true, // return new doc if one is upserted 
    upsert: true // insert the document if it does not exist 
}) 

的文档findOneAndUpdate method指出

返回: 已更新文档。根据returnOriginal属性的值,这将是更新前的文档或更新后的文档。

但无法找到任何关于此returnOriginal属性。任何人都知道如何正确设置它?

回答

3

一个Java相当于你的查询应该大致是这样的:

关于returnOriginal财产 - 你是对的 - 有没有这样的事情。 javadoc在这个地方是无关紧要的。但是,FindOneAndUpdateOptions中有returnDocument财产。您可以将其设置为ReturnDocument.AFTERReturnDocument.BEFORE,相当于new: true/false

+0

'returnOriginal'标志应该是'new FindOneAndUpdateOptions()。returnDocument(ReturnDocument.BEFORE))' – chridam

+0

@chridam不是'ReturnDocument.AFTER'等同于'new:true'吗? –

+0

虽然在这种情况下是这样的,但我指的是OP在他们的问题中提出的问题_但无法找到任何有关“returnOriginal”属性的信息。任何人都知道如何正确设置它?_ – chridam

相关问题