[解決済み] MongoDB のオブジェクトを部分的に更新して、新しいオブジェクトを既存のオブジェクトにオーバーレイ/マージするにはどうすればよいですか?
2022-04-03 16:23:32
質問
MongoDBに保存されたこのドキュメントがあるとします。
{
_id : ...,
some_key: {
param1 : "val1",
param2 : "val2",
param3 : "val3"
}
}
に関する新しい情報を持つオブジェクト。
param2
と
param3
を保存する必要があります。
var new_info = {
param2 : "val2_new",
param3 : "val3_new"
};
新しいフィールドをオブジェクトの既存の状態の上にマージ/オーバーレイして、param1が削除されないようにしたい。
これを行うには
db.collection.update( { _id:...} , { $set: { some_key : new_info } }
MongoDB は聞かれたとおりに、some_key をその値に設定します。 古いものを置き換えます。
{
_id : ...,
some_key: {
param2 : "val2_new",
param3 : "val3_new"
}
}
MongoDBに新しいフィールドだけを(一つ一つ明示的に記述せずに)更新させる方法は? というと、こうなります。
{
_id : ...,
some_key: {
param1 : "val1",
param2 : "val2_new",
param3 : "val3_new"
}
}
私はJavaクライアントを使用していますが、任意の例があればありがたい
どのように解決するのですか?
私が質問を正しく理解するならば、あなたは他のドキュメントの内容でドキュメントを更新したいのですが、まだ存在しないフィールドだけを更新し、すでに設定されているフィールドは完全に無視します(たとえ別の値であっても)。
1つのコマンドでそれを行う方法はありません。
まず、ドキュメントにクエリを発行し、何をしたいのか?
$set
そして、それを更新します (古い値をマッチングフィルターとして使用し、その間に同時更新が発生しないようにします)。
ご質問の別の読み方としては、あなたが満足しているのは
$set
しかし、すべてのフィールドを明示的に設定したいわけではありません。その場合、どのようにデータを渡すのでしょうか?
次のようにすればよいことはご存じでしょう。
db.collection.update( { _id:...} , { $set: someObjectWithNewData }
関連
-
[解決済み】MongoDBシェルですべてのコレクションを一覧表示するには?
-
[解決済み] 同じデータベース内でコレクションをコピーする最も速い方法は何ですか?
-
[解決済み] MongoDBに "like "を使ってクエリを実行する方法
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み] コマンドラインからMongoDBデータベースを削除する方法を教えてください。
-
[解決済み] mongodbの最後のN個のレコードを取得する方法は?
-
[解決済み] MongoDB コレクションのオブジェクト配列で、問い合わせた要素のみを取得する
-
[解決済み] ユーザー名とパスワードでMongoDBを保護する方法
-
[解決済み】MongoDBでデータのバージョニングを実装する方法
-
[解決済み】MongoDB: 1つのフィールドですべてのドキュメントを更新する
最新
-
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: ensureIndex をいつ呼び出すか?
-
[解決済み] mongodb シェルでドキュメントの値を印刷する
-
[解決済み] MongoDBでコレクションを削除するには?
-
[解決済み] mongoDB の文字列フィールドの値の長さ
-
[解決済み] ネストされた配列の中で、マッチしたサブドキュメントの要素のみを返す
-
[解決済み] 条件付きでMongoDBを更新する
-
問題 - mongodb - ストリームの終了に早く到達する
-
[解決済み] 複数のキーで "distinct "を効率的に実行するには?
-
[解決済み】シェルスクリプトでmongoのコマンドを実行するには?
-
[解決済み】Node.js Mongoose.js の文字列を ObjectId に変換する関数