我是Mongo DB的新手,遇到了麻烦,因为它在不同的环境(开发,质量检查和生产)中的行为有所不同

我正在使用findAndModify更新MongoDB中的记录。

有一个每天运行的作业,它会将数据更新/插入到Mongo DB中,并且我正在使用findAndModify来更新记录。

但是我观察到的是,尽管三个环境具有相同的Data,但findAndModify返回的第一条记录在Dev,QA和Production环境中有所不同。

根据Mongo DB文档,它指出findAndModify将修改第一个文档

目前这是我的代码:

BasicDBObject update = new BasicDBObject();
update.append("$set", new BasicDBObject(dataformed));
coll.findAndModify(query, update);


请让我知道如何确保findAndModify返回上次更新记录,而不是取决于不可预测的行为?

编辑部分

我正在尝试对我的代码使用sort,但是它给了我编译错误

coll.findAndModify(query,sort:{Rating:1},update);

我有一个名为lastUpdated的字段,该字段是使用System.currentTimeMilis创建的

所以我可以按照这种方式使用lastUpdated来获取Last Updated Record

coll.findAndModify(  query,
    new BasicDBObject("sort", new BasicDBObject("lastUpdated ", -1)),
    update);

最佳答案

看来您正在使用Java,因此必须像其他参数一样将sort参数构造为DBObject

coll.findAndModify(
    query,
    new BasicDBObject("sort", new BasicDBObject("rating", 1)),
    update);

关于java - MongoDB:如何使findAndModify返回最后更新的记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13920730/

10-11 00:05