MongoDB のネストしたフィールドのデータを更新する
私はMongoをデータベースとして使用しています。
{
_id : '123'
friends: [
{name: 'allen', emails: [{email: '11111', using: 'true'}]}
]
}
さて、私は 's friends' email 's _id が '123' である email を motify したいのです。 というメールには、このように書きます。
db.users.update ({_id: '123'}, {$set: {"friends.0.emails.$.email" : '2222'} })
というのは簡単ですが、配列に2つ以上のデータがある場合、それは間違っています。 そこで、質問です。 どのように私はネストされたファイル内のデータを動機づけすることができます---ちょうど2つ以上のネストされた配列を持っていますか?ありがとうございます。
44
3
配列にはドット記法を使用する必要があります。
つまり、
$
を更新しようとする要素のゼロベースのインデックスに置き換える必要があります'。例えば
は、最初の友人の最初のメールを更新し
は、最初の友人の2番目の電子メールを更新します。
多階層アリーの更新は非常に面倒なので、深層アリーを置き換えるという方法をとっています。
しかし、なぜsave()メソッドを使わないのですか? save()はあなたのドキュメント全体を置き換えます。あなたのドキュメントが小さい場合はそれで良いですが、あなたのドキュメントが本当に大きい場合は、ドキュメントの一部だけを置き換える方が良いアイデアです。
またはループして、最上位の配列と第二階層の配列(iiとjj)の位置を使用して更新します。
アドバイスとしては、スキーマを設計するときに、その配列の更新を行わない限り、配列を別の配列の中に入れてはいけないということです。
Mongooseを使用したソリューション。