0

私は mongoDB を初めて使用します。要点は、(編集された) ドキュメントを更新する代わりに、アプリケーション ウィッチのバグが複数の mongoDB エントリをもたらすことに新たに気付いたことです。現在、アプリケーションはオンラインであり、バグに気づき、それに伴うトラブルに対処しようとしています。

次の状況: @mongoDB この構造を含むドキュメントがたくさんあります:

"_id" : ObjectId("4fd9ede5a6b9579f5b000003"),
"USER" : "my_username",
"matchID" : 18809,
"data1" : 2,
"data2" : 1,
"tippDate" : ISODate("2012-06-14T13:57:57Z"),
"data3" : 0

ユーザーがアプリケーションでデータを変更すると、アプリケーションは既存のドキュメントを更新する代わりに、新しいドキュメントを挿入します。

そのように

{
"_id" : ObjectId("4fd9ede5a6b9579f5b000003"),
"USER" : "my_username",
"matchID" : 18809,
"data1" : 2,
"data2" : 1,
"tippDate" : ISODate("2012-06-14T13:57:57Z"),
"data3" : 0
}
{
"_id" : ObjectId("4fd9ede5a6b9579f5b000002"),
"USER" : "my_username",
"matchID" : 18809,
"data1" : 4,
"data2" : 2,
"tippDate" : ISODate("2012-06-14T12:45:33Z"),
"data3" : 0
}

現在、アプリケーション側のバグは解決されていますが、データベースをクリーンアップする必要があります。ゴールは、各ユーザーからの最新の記録/ドキュメントのみを保持することです。1 つの方法は、アプリケーション側でこれを処理することです。1 人のユーザーからすべてのデータを読み込み、日付順に並べ替え、1 人のユーザーからすべてのデータを削除し、最新のエントリを mongoDB に書き戻します。

しかし: mongoDB を MySQL のジョイントで削除のように処理することはできませんか?

どんな種類の助けやヒントもありがとう!

4

1 に答える 1

0

MySQLのジョイントでmongoDBを削除のように処理することはできませんか?

いいえ。MongoDB は結合をまったくサポートしていません。

ただし、MongoDB には並べ替えがあります。したがって、スクリプトを実行して各ユーザーを取得し、日付で並べ替えてから、古いユーザーを削除できます。

また、_idフィールドをオーバーライドできることに注意してください。である必要はありませObjectId()。あなたの説明に基づいて、あなたにはユニークな がuser_nameあり_idます。

于 2012-06-14T18:19:21.173 に答える