0

私は Mongo DB を初めて使用し、さまざまな環境 ( Dev 、QA 、および Production ) で動作が異なるため問題を抱えています。

MongoDB のレコードを更新するために findAndModify を使用しています。

データを Mongo DB に更新/挿入するジョブが毎日実行され、 findAndModify を使用してレコードを更新しています。

しかし、私が観察したのは、 findAndModify によって返される最初のレコードが Dev 、 QA 、および Production 環境で異なることですが、3 つの環境は同じデータを持っていますか??

Mongo DB document に従って、 findAndModify が最初のドキュメントを変更すると述べています

現在、これは私のコードです:

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

予測不可能な動作に依存するのではなく、findAndModify が最終更新レコードを返すようにする方法を教えてください。

編集部分

コードにソートを使用しようとしていますが、コンパイル エラーが発生します

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

System.currentTimeMilis を使用して作成された lastUpdated というフィールドがあります。

したがって、このlastUpdatedをこの方法で使用して、最終更新レコードを取得できますか

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

2 に答える 2

2

Java を使用しているように見えるため、他のパラメーターと同様に、sortパラメーターを として構築する必要があります。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 に答える