2017-02-16 6 views
0

不要な文字列を含むmongodb内の複数のドキュメントを更新しようとしています。だから私はフィールド内の文字列の一部のsliceでドキュメントを更新する必要があります。Mongodb:フィールド値のスライスを含むドキュメントを更新する

私はこのようなものをデータベースに持っています。

{ 
    "_id" : ObjectId("58a04a6c377c443a3af3dbf9"), 
    "studentNumber" : "S1859/0113", 
    "gender" : "M", 
    "studentName" : "Had To change this", 
    "points" : "34", 
    "division" : "FLD", 
    "subjects" : "CIV-D HIST-F GEO-F KISW-F ENGL-F BIO-F B/MATH-F", 
    "examType" : "CSEE", 
    "examYear" : "2011", 
    "schoolNumber" : "S1859", 
    "schoolName" : "CHANGED SECONDARY SCHOOL", 
    "__v" : 0 

}

studentNumberフィールドはS1859/0113を有し、schoolNumber"S1859"を有しています。今度はS1859studentNumberフィールドにスライスして、0113のままにしておく必要があります。

関数ではありません私は

db.results.find().forEach(function(e) { e.studentNumber = e.studentNumber.split('/').slice(1); e.save() })

を試してみましたしかし、それはエラーe.save()を与えました。

db.results.update({studentNumber: {$regex: /[PS]{1}[0-9]{4}\/[0-9]{4}/}}, {condition to use}, false, true)

私はでこれを行うするかどうかはわかりません。

同じ文書内のフィールドをスライスして更新するにはどのような条件を設定するべきかわかりません。

助けてください。 forEach

答えて

1

、あなたが使用することができます。

db.results.find().forEach(
    function(e) { 
     e.studentNumber = e.studentNumber.split('/').slice(1).toString(); 
     db.results.save(e); 
    }) 
+0

は、それが働いて、ありがとうございます! (Thoは期待通りではありませんでしたが)レコードを更新し、今は上記のメソッドではなく別のものを使用する必要があります。 – ArchNoob

関連する問題