[解決済み] Mongodbでキーに基づいた重複を削除する方法は?
質問内容
MongoDBに約300万件のレコードがあるコレクションがあります。私のサンプルレコードは次のようになります。
{ "_id" = ObjectId("50731xxxxxxxxxxxxxxxxxxxx"),
"source_references" : [
"_id" : ObjectId("5045xxxxxxxxxxxxxx"),
"name" : "xxx",
"key" : 123
]
}
コレクションに同じレコードが多数重複しています。
source_references.key
. (重複しているという意味です。
source_references.key
ではなく
_id
).
に基づいて重複するレコードを削除したい。
source_references.key
私は、各レコードをトラバースし、存在する場合はレコードを削除するいくつかのPHPコードを記述することを考えています。
Mongo Internalのコマンドラインで重複を削除する方法はありますか?
どのように解決するのですか?
この回答は時代遅れです。
その
dropDups
オプションは
は MongoDB 3.0 で削除されました。
そのため、ほとんどの場合、別のアプローチが必要になります。例えば、上で提案されているように集約を使うことができます。
ユニークキーを追加しても、MongoDBがドキュメントを重複させる
.
というのが確実な場合は
source_references.key
が重複したレコードを識別する場合、一意なインデックスを確保するために
dropDups:true
インデックス作成オプションは、MongoDB 2.6 以降で使用可能です。
db.things.ensureIndex({'source_references.key' : 1}, {unique : true, dropDups : true})
これは、各
source_references.key
の値で、重複キー違反になるような後続のドキュメントは削除します。
重要なお知らせ
: がないドキュメントは
source_references.key
フィールドがあるものとみなされます。
ヌル
の値がないので、そのキーフィールドがない後続の文書は削除されます。 このとき
sparse:true
インデックス作成オプションを使用すると、インデックスが
source_references.key
フィールドがあります。
明らかな注意 : 意図しないデータ損失が心配な場合は、データベースのバックアップを取り、まずステージング環境で試してみてください。
関連
-
[解決済み] Mongorestore はファイル "db/collection.bson" をどうしたらいいかわからないため、スキップします。
-
[解決済み] 同じデータベース内でコレクションをコピーする最も速い方法は何ですか?
-
[解決済み] SocketException: アドレスはすでに使用中です MONGODB
-
[解決済み] JavaScriptでオブジェクトのキー/プロパティの数を効率的にカウントする方法
-
[解決済み] MongoDBに "like "を使ってクエリを実行する方法
-
[解決済み] 重複した行を削除するにはどうすればよいですか?
-
[解決済み] リスト内の重複を削除する
-
[解決済み] リストの順番を維持したまま、重複を削除するにはどうしたらいいですか?
-
[解決済み] コマンドラインからMongoDBデータベースを削除する方法を教えてください。
-
[解決済み] オブジェクトの配列からすべての重複を削除するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Mongodb ホットフィックス KB2731284
-
[解決済み] Mongodb: ensureIndex をいつ呼び出すか?
-
[解決済み] MongoDB - シンプルなサブクエリの例
-
[解決済み] MongoDB の個別集計
-
[解決済み] 同じデータベース内でコレクションをコピーする最も速い方法は何ですか?
-
undefinedエラー: getaddrinfo ENOTFOUND localhost または MongoDB connected disconnected
-
[解決済み] Mongo で "NOT IN" クエリを実行するにはどうすればいいのですか?
-
[解決済み] MongoDB SELECT COUNT GROUP BY
-
[解決済み】Node.js Mongoose.js の文字列を ObjectId に変換する関数
-
[解決済み】RedisはmongoDBよりどれくらい速いのか?