[解決済み】mongodbで複数の配列要素を更新する方法
2022-04-19 02:02:13
質問
要素の配列を保持する Mongo ドキュメントがあります。
をリセットしたい。
.handled
属性は、配列内のすべてのオブジェクトの
.profile
= XXとする。
ドキュメントは以下のような形式になっています。
{
"_id": ObjectId("4d2d8deff4e6c1d71fc29a07"),
"user_id": "714638ba-2e08-2168-2b99-00002f3d43c0",
"events": [{
"handled": 1,
"profile": 10,
"data": "....."
} {
"handled": 1,
"profile": 10,
"data": "....."
} {
"handled": 1,
"profile": 20,
"data": "....."
}
...
]
}
ということで、以下を試してみました。
.update({"events.profile":10},{$set:{"events.$.handled":0}},false,true)
ただし、更新されるのは 最初 にマッチした配列要素を、それぞれのドキュメントで使用します。(これは $ - 位置演算子 .)
を更新するにはどうすればよいですか? すべて マッチした配列要素
解決方法は?
UPDATEしてください。 Mongo バージョン 3.6 では、この問題は修正され、これを実現する方法があるため、この回答は無効となります。他の回答を参照してください。
現時点では、位置演算子を使用して配列内のすべての項目を更新することはできません。JIRA を参照してください。 http://jira.mongodb.org/browse/SERVER-1243
回避策として、できます。
- 各項目を個別に更新する (events.0.handled events.1.handled) ...) または...
- ドキュメントを読み、編集を行う を手動で作成し、それを保存して 古いもの(チェック 更新する場合 Current" を確保したい場合は アトミックアップデート)
関連
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み] JavaScriptで配列の先頭に新しい配列要素を追加するにはどうすればよいですか?
-
[解決済み] MongoDBに "like "を使ってクエリを実行する方法
-
[解決済み】配列に何かを追加する方法は?
-
[解決済み】Swiftで配列を連結またはマージするにはどうすればよいですか?
-
[解決済み】TypeScriptで複数の型を持つ配列を定義する
-
[解決済み】KotlinのList型とArray型の違いについて
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 代入A(:)=Bにおいて、AとBの要素数は同じでなければならない
-
[解決済み] JSON スキーマで列挙型の配列を定義する正しい方法
-
[解決済み] デリミタを使って文字列をスライスする方法
-
[解決済み] VBAでの文字列配列の宣言と初期化
-
[解決済み】Swiftで配列を連結またはマージするにはどうすればよいですか?
-
[解決済み】TypeScriptで複数の型を持つ配列を定義する
-
[解決済み】JSONのオブジェクトの配列をYAMLで表現したもの
-
[解決済み】Swiftで配列から要素を削除する方法
-
[解決済み】Bashで配列をスライスする方法
-
[解決済み】要素を配列の先頭にプッシュする最も簡単な方法は何ですか?