2013-08-29 5 views
7

mongoドキュメントを一括更新しようとしています。

しかし私は、文のどこの部分が正常に動作し、source.expires-atフィールドを更新しないクエリに

db.articles.update(
    { 
     'categories.id': ObjectId("51cd5272222wb6zs464fa4d9"), 
     'source.importer': 'pa' 
    }, 
    { 
     $set : 
      { 
       'source.expires-at': ISODate("2014-01-01T08:39:45Z") 
      } 
    } 
) 

このクエリを使用しています。

文書構造は

{ 
    "_id": ObjectId("5211dc100000044707000015"), 
    "categories": { 
    "0": { 
     "id": ObjectId("51cd5272222wb6zs464fa4d9") 
    } 
    }, 
    "source": { 
    "importer": "pa", 
    "expires-at": ISODate("2013-09-18T08:49:32.0Z") 
    } 
} 
+0

通常は、位置演算子を使用しますが、それが原因複数のサブ文書のフィールドを検索するには、ここでは動作しません... – Sammaye

+0

@Sammaye定位置演算子は、配列 –

+0

@ErdalGためです。はい、私は彼がオブジェクトの表現を示したことを見たことがありませんでした – Sammaye

答えて

13

はこれを試してみてくださいです:

db.articles.update({ 'categories.id': ObjectId("51cd5272222wb6zs464fa4d9"), 'source.importer': 'pa'}, { $set : { 'source.expires-at': ISODate("2014-01-01T08:39:45Z") } }, {multi: true}) 

あなたが{マルチ:真}追加のオプションの引数を渡す必要があります。これにで

ルックはhttps://education.10gen.com/courses/10gen/M101JS/2013_August/courseware/CRUD/Multi-update/

+0

簡単な間違い....ありがとう。 – user1954882

+0

ようこそ。それが役に立った場合、その答えを受け入れてください:) – Yalamber

関連する問題