1. ホーム
  2. mongodb

[解決済み] MongoDB のネストしたフィールドのデータを更新する

2023-06-24 23:53:03

質問

私はMongoをデータベースとして使っています。

 {
   _id : '123'
   friends: [
     {name: 'allen', emails: [{email: '11111', using: 'true'}]}
   ]
 }

さて、私はユーザーの友人の電子メールを取得したいのですが、 _id が '123' である電子メールです。 というように書きます。

db.users.update ({_id: '123'}, {$set: {"friends.0.emails.$.email" : '2222'} })

は簡単ですが、メール配列が2つ以上のデータを持っている場合、それは間違っています。 そこで、質問です。 どのように私はネストされたファイル内のデータを動機づけることができます---ちょうど2つ以上のネストされた配列を持っている?ありがとうございます。

どのように解決するには?

この問題を解決するには ドット表記 を使う必要があります。

つまり $ を更新しようとする要素のゼロベースのインデックスに置き換えます。

例えば

db.users.update ({_id: '123'}, { '$set': {"friends.0.emails.0.email" : '2222'} });

は、最初の友人の最初のメールを更新し

db.users.update ({_id: '123'}, { '$set': {"friends.0.emails.1.email" : '2222'} })

は、最初の友人の2番目のメールを更新します。