我是Mongo DB的新手并且遇到麻烦,因为它在不同的环境(Dev,QA和Production)中表现不同
我正在使用findAndModify来更新MongoDB中的记录。
每天运行一个Job,它将数据更新/插入Mongo DB,我使用findAndModify来更新记录。
但我观察到的是,findAndModify返回的第一条记录在Dev,QA和Production environemnts中有所不同,尽管这三种环境具有相同的数据?
根据Mongo DB文档,它声明findAndModify将修改第一个文档
目前这是我的代码:
BasicDBObject update = new BasicDBObject();
update.append("$set", new BasicDBObject(dataformed));
coll.findAndModify(query, update);
请告诉我如何确保findAndModify返回上次更新的记录,而不是依赖于不可预测的行为?
已编辑的部分
我正在尝试对我的代码使用sort,但它给了我编译错误
coll.findAndModify(查询,排序:{rating:1},更新);
我有一个名为lastUpdated的字段,它是使用System.currentTimeMilis
创建的所以我可以使用这个lastUpdated,如这样显示最后更新记录
coll.findAndModify( query,
new BasicDBObject("sort", new BasicDBObject("lastUpdated ", -1)),
update);
答案 0 :(得分:2)
您似乎正在使用Java,因此您必须将sort
参数构造为DBObject
,就像其他参数一样:
coll.findAndModify(
query,
new BasicDBObject("sort", new BasicDBObject("rating", 1)),
update);
答案 1 :(得分:1)
正如我们已在your other question向您解释的那样,您必须在文档中添加一个字段,其中包含更改日期,然后按该字段排序,或者您必须使用capped collection,因为他们保证保留插入顺序。