Mongo更新后获取受影响的行

时间:2015-11-15 13:43:16

标签: java mongodb

如何在进行更新后指示Mongo返回受影响的行? 目前它返回

{ "serverUsed" : "localhost:27017" , "ok" : 1 , "n" : 12 , "updatedExisting" : true}

这意味着更新了12条记录,但我想知道它们是哪条记录。

一种解决方法是执行两个查询,首先查找_id,然后再实际更新它们,但这还不够好。

非常感谢

R上。

1 个答案:

答案 0 :(得分:1)

使用 findAndModify() API。例如,按照此博客文章 MongoDB findAndModify() examples using Mongo Shell and Java Driver 的指南,您可以将更新查询编写为:

    // findAndModify operation. Update colour to blue for cars having speed < 45
    DBObject query = new BasicDBObject("speed",
            new BasicDBObject("$lt", 45));
    DBObject update = new BasicDBObject();
    update.put("$set", new BasicDBObject("color", "Blue"));
    DBCursor cursor = coll.find();
    try {
        while (cursor.hasNext()) {
            System.out.println(cursor.next());
        }
    } finally {
        cursor.close();
    }
    coll.findAndModify(query, update);