2016-05-13 6 views
0

私は、指定されたURLを持つ適切な文書の中で、ネストされた 'crawled'をTrueに更新したいと考えています。MongoDB - 入れ子になった文書の更新

私はかなり新しいmongodbです。私はこれを理解できないようです。どんな助けでも大歓迎です。

コレクション構造

{ 
    "_id": { 
     "$oid": "56e9978732beb44a2f2ac6ae" 
    }, 
    "domain": "techweekeurope.co.uk", 
    "good": [ 
     { 
      "crawled": false, 
      "added": { 
       "$date": "2016-03-16T17:27:17.461Z" 
      }, 
      "link": "/workspace/microsoft-dell-windows-surface-106648" 
     }, 
     { 
      "crawled": false, 
      "added": { 
       "$date": "2016-03-16T17:27:17.461Z" 
      }, 
      "link": "/workspace/new-street-view-images-raise-privacy-concerns-5850" 
     }, 
     { 
      "crawled": false, 
      "added": { 
       "$date": "2016-03-16T17:27:17.461Z" 
      }, 
      "link": "/workspace/quiz-of-the-week-dell-reborn-106744" 
     } 
    ], 
    "bad": [], 
    "link_found": false, 
    "subdomain": "http://www.", 
    "crawled": true 
} 

リンクを持つ最初の文書検索でと第2の文書セットの更新値で更新クエリ

self.collection.update({'good.link':'/workspace/microsoft-dell-windows-surface-106648'}, {'crawled': True}) 

答えて

1

。更新する配列の要素を指定するには、$。crawledを指定する必要があります。

.update(
     {'good.link':'/workspace/microsoft-dell-windows-surface-106648'}, 
     { 
      $set : {'good.$.crawled': true} 
     } 
) 
+0

(https://docs.mongodb.com/v3.0/reference/operator/update/positional/) –

+0

おかげで、私はあなたが最初に言ったことをしようと、それは働いていませんでしたが、私はちょうどあなたの編集を見て、それは完全に動作しています。あなたの助けをありがとう、答えは受け入れた。 – Adders

+0

あなたは歓迎です..はい、前にタイプミスがありました。答えを受け入れてくれてありがとう。 –

0

あなたは、ドキュメントの配列内の特定のエントリを照会するために$elemMatchを使用する必要があります。一致させたら、を使用して値を変更することができます

この例はfindですが、更新と同様に動作します。 [参考]

db.survey.find(
    { results: { $elemMatch: { product: "xyz", score: { $gte: 8 } } } } 
) 
+0

クエリ条件は1つだけです。そのために$ elemMatchを使用する必要はありません。 –

関連する問題