2017-01-28 16 views
0

MongoDBでteacher_ids[] = [document.owner_id]を設定するスクリプトを実行しようとしています。 owner_idは、コレクション内のすべてのオブジェクトに既に存在します。私の現在の試みは、次のようになります。updateの第2引数でthisがドキュメントを参照していないことを意味する必要がありますMongoDBクエリでオブジェクトのプロパティを参照する方法

db.getCollection('readings').update({ $where: "this.teacher_ids[0] != this.owner_id" }, { $set: { "teacher_ids": [this.owner_id] }}, { multi: true }) 

すべての文書が

doc: { 
    owner_id: "some_id", 
    teacher_ids: [undefined] 
} 

ようになっていることを除いてほとんど作品。私はそれを設定してもらうにはどうすればよい:

teacher_ids = [document.owner_id] 

例文書

{ 
    "_id" : ObjectId("586f07bd6a2169fdffb0563b"), 
    "teacher_ids" : [], 
    "owner_id" : "57c268dd6c9fd2320035e67e", 
    "source" : "http://www.omfgdogs.com", 
    "title" : "Test", 
    "updatedAt" : ISODate("2017-01-28T07:43:46.597Z"), 
    "createdAt" : ISODate("2017-01-06T02:58:05.699Z") 
} 

答えて

1

私はあなたがこのまたはそれ以外で、他のフィールドの値を参照することができ、更新コンポーネントではないと思います。任意のアイデアは、私はサンドボックスコレクションでこのクエリを実行し、それが[未定義]にすべてのアレイを設定

db.getCollection('readings').find({ $where: "this.teacher_ids[0] != this.owner_id" }).forEach(function(x){x.teacher_ids = [x.owner_id]; db.readings.save(x)}); 
+0

かかわらスクリプトを

を行うことができますか? – Corbfon

+0

コレクションからサンプルドキュメントを追加できますか?それらの文書にowner_idがないようです。 –

+0

サンプルドキュメントを追加しました。 – Corbfon

関連する問題