0

我是 Mongo DB 的新手,遇到了麻烦,因为它在不同的环境(开发、QA 和生产)中表现不同

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

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

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

根据 Mongo DB 文档,它声明 findAndModify 将修改第一个文档

目前这是我的代码:

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

请让我知道如何确保 findAndModify 返回最后更新的记录,而不是依赖于不可预测的行为?

编辑部分

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

coll.findAndModify(查询,排序:{评级:1},更新);

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

那么我可以像这样使用这个 lastUpdated 来获取最后更新的记录吗

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

2 回答 2

2

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

coll.findAndModify(
    query, 
    new BasicDBObject("sort", new BasicDBObject("rating", 1)), 
    update);
于 2012-12-17T20:15:09.713 回答
1

正如我们在您的另一个问题中已经向您解释的那样,您必须在文档中添加一个包含更改日期的字段,然后按该字段排序,或者您必须使用上限集合,因为它们保证插入顺序是保存。

于 2012-12-17T19:29:13.227 回答