2017-04-11 6 views
0

私は以下の文書を持っています。私がしようとしているのはIDを設定せず、各文書から_idを保持することです。mongdbの文書から未設定のidフィールド

"educations": [ 
{ 
    "_id": ObjectId("58ec7aaaa3c19b8793805cca00e"), 
    "school": "xyz", 
    "type": "pqr", 
    "updatedAt": ISODate("2017-04-11T06:36:03.588Z"), 
    "createdAt": ISODate("2015-03-05T12:32:26.735Z"), 
    "obj_type": "education", 
    "current": false 
}, 
{ 
    "_id": ObjectId("58eceeeee353c19b673805cca00f"), 
    "school": "KTH", 
    "type": "tun", 
    "updatedAt": ISODate("2017-04-11T06:36:03.588Z"), 
    "createdAt": ISODate("2015-02-16T23:17:12.393Z"), 
    "obj_type": "education", 
    "id": ObjectId("574eassssh83cbee22336d2d4"), 
    "current": false 
}, 
{ 
    "createdAt": ISODate("2016-08-19T07:31:12.640Z"), 
    "updatedAt": ISODate("2016-08-19T07:31:12.640Z"), 
    "type": "abc", 
    "school": "KTH", 
    "duration": "3+ år", 
    "_id": ObjectId("57bsssss687dfec6716dd75"), 
    "current": false 
} 

]

var query = { 
      $unset: {} 
      }; 
query.$unset['profile.educations.'+index+'.id'] = 1; 
models.User.update({_id: user._id},query, function(err, val){ 
     //some operation 
}); 

私がここで間違って何をしましたか?いくつかの提案は非常に高く評価されています。これは、同じクエリで、mongoコンソールでそれを削除して動作します。

+0

あなたの文書は、組み込みのための 'profile'ルートキーを持っていないようですサブ文書 ''profile.educations。' + index + '。id''、おそらく' '教育を意味しましたか?+ index +'。id''? – chridam

+0

@chridamその元のプロファイルのサブ文書 – Bikash

+0

'User'モデルのスキーマ定義の完全な文書構造を表示できますか? – chridam

答えて

0

あなたはこのようなコードを使用することができます:

db.collection.find({ 
     educations: { 
      $exists: true 
     } 
    }).forEach(function(myDoc) { 
     var child = myDoc.educations; 
     for (var i = 0; i < child.length; i++) { 
      var ob = child[i]; 
      if ('id' in ob) { 
       delete ob.id; 
       child[i] = ob; 
      } 
     }db.collection.update({ 
      _id: myDoc._id 
     }, { 
      $set: { 
       educations: child 
      } 
     }); 
     printjson(myDoc); 
    }); 

(OR) また、このいずれかを試してみてください

db.collection.update({ 
    "educations.id": {$exists: true} 
},{ 
    $unset: { 
     "educations.$.id" : true 
    } 
},false,true) 
+0

@Bikashこれもチェックしてください.. –

+0

それは役に立たなかった – Bikash

関連する問題