>

몽고 쉘에서 javascript 스크립트를 실행하는 "things"라는 문서를 업데이트하려고합니다. 명시 적으로 업데이트 할 필드를 말하면 매력처럼 작동하지만 배열에서 필드 이름을 읽으려고 할 때 문제가 있습니다.

이것은 내 코드입니다 :


var continuousWithMissingValues = ["A2","A14"];
var categoricWithMissingValues = ["A1", "A4", "A5", "A6", "A7"];
for (var i = 0; i < continuousWithMissingValues.length; i++){
// db.things.update({A2: "?" },{$set: {A2: -1 }},  { multi : true }); this line is working properly
db.things.update({continuousWithMissingValues[i]: "?" },{$set: {continuousWithMissingValues[i]: -1 }}); //if I try to update while reading values from the array I'm getting error
print('Updated missing values for'+ continuousWithMissingValues[i]);
}


행운없이이 줄을 사용해 보았습니다 (오류는 발생하지 않지만 아무것도 업데이트하지 않습니다) :


db.things.update({"continuousWithMissingValues.i": "?" },{$set: {"continuousWithMissingValues.i": -1 }});


  • 답변 # 1

    몽고 쉘은 계산 된 속성 이름을 지원하지 않으므로 몇 단계만으로 쿼리를 작성하고 객체를 업데이트해야합니다.

    var query = {};
    query[continuousWithMissingValues[i]] = "?";
    var update = {$set: {}};
    update.$set[continuousWithMissingValues[i]] = -1;
    db.things.update(query, update);
    
    

관련 자료

  • 이전 mysql - 하루에 여러 기간의 SUM 타임 스탬프
  • 다음 javascript - 하나의 배열/객체에 여러 변수를 강력하게 입력