[解決済み] MongoDB: 1つのコマンドで複数のドキュメントを更新するには?
2022-03-01 16:10:07
質問
以下のサンプルコードでは、1つのドキュメントしか更新されないことに驚きました。
> db.test.save({"_id":1, "foo":"bar"});
> db.test.save({"_id":2, "foo":"bar"});
> db.test.update({"foo":"bar"}, {"$set":{"test":"success!"}});
> db.test.find({"test":"success!"}).count();
1
ループして、すべて変更されるまで更新し続けることができるのは知っていますが、それはひどく非効率的なようです。もっといい方法はないでしょうか?
どのように解決するのですか?
マルチアップデートは最近追加されたので、開発版リリース(1.1.3)でのみ利用可能です。シェルからマルチアップデートを行うには、以下のようにします。
true
の4番目の引数として
update()
ここで、3番目の引数はupsertの引数である。
db.test.update({foo: "bar"}, {$set: {test: "success!"}}, false, true);
mongodb 2.2+のバージョンでは、複数のドキュメントを一度に更新するためにオプションmultiをtrueに設定する必要があります。
db.test.update({foo: "bar"}, {$set: {test: "success!"}}, {multi: true})
mongodb 3.2+のバージョンでは、新しいメソッドを使用することもできます。
updateMany()
を使用すると、複数のドキュメントを一度に更新することができます。
multi
オプションで指定します。
db.test.updateMany({foo: "bar"}, {$set: {test: "success!"}})
関連
-
[解決済み】MongoDBデータベースの名前を変更する方法とは?
-
[解決済み】MongoDBシェルですべてのコレクションを一覧表示するには?
-
[解決済み] コマンド1つでmongo DBを停止する方法
-
[解決済み] MongoDBと同等ではない
-
[解決済み] MongoDBでフィールドが存在することを確認する
-
[解決済み] MongoDBに "like "を使ってクエリを実行する方法
-
[解決済み] コマンドラインからMongoDBデータベースを削除する方法を教えてください。
-
[解決済み] mongodbの最後のN個のレコードを取得する方法は?
-
[解決済み] 別のフィールドの値を使って 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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 配列のサイズが1より大きい文書を検索します。
-
[解決済み] 複合リテラルのキー無しフィールドの使用
-
[解決済み] Mongodb ホットフィックス KB2731284
-
[解決済み] MongoDB - シンプルなサブクエリの例
-
[解決済み] 条件付きでMongoDBを更新する
-
[解決済み] MongoDBと同等ではない
-
[解決済み] MongoDBの命名規則とは何ですか?
-
[解決済み] MongoDBでフィールドが存在することを確認する
-
[解決済み】データベースとしてのNoSQL(MongoDB) vs Lucene(またはSolr)【クローズド
-
[解決済み】MongoDBのすべてのドキュメントのフィールド名を変更するにはどうすればよいですか?