0
現在MongoDB Collectionを経由しているカーソルがあり、別の値を取り出して別のテーブルに追加しています。しかし、プロセスが実行されているときにカーソルがコレクション内のすべてのドキュメントをカバーしていないことがわかりました(カウンタを追加して見つけました)。Mongo DB Java Driverカーソルにフルコレクションが含まれていません
ビーコンルックアップコレクションには3342個のドキュメントがありますが、ロギングからは1114個まで繰り返して表示され、エラーなしでカーソルが終了します。デバッグ時にカーソルを確認すると、3343個のドキュメントがすべて含まれます。何かアドバイスは素晴らしいことだ
public void flattenCollection(){
MongoCollection<Document> beaconLookup = getCollection("BEACON_LOOKUP");
MongoCollection<Document> triggers = getCollection("DIM_TRIGGER");
System.out.println(beaconLookup.count());
// count = 3342
long count = beaconLookup.count();
MongoCursor<Document> beaconLookupCursor = beaconLookup.find().batchSize((int) count).noCursorTimeout(true).iterator();
MongoCursor<Document> triggersCursor = triggers.find().iterator();
try {
while (beaconLookupCursor.hasNext()) {
int major = (Integer) beaconLookupCursor.next().get("MAJOR");
int minor = (Integer) beaconLookupCursor.next().get("MINOR");
if(major==1215) {
System.out.println("MAJOR " + major + " MINOR " + minor);
}
triggers.updateMany(and(eq("MAJOR", major),
eq("MINOR", minor)),
combine(set("BEACON_UUID",beaconLookupCursor.next().get("UUID"))));
count = count - 1;
System.out.println(count);
}
} finally {
beaconLookupCursor.close();
}
}
:以下
は、私が実行しようとしており、現在の問題を抱えています方法です!
ありがとうございました!私は数時間それを見つめた後にコードブラインドされています。 –