나는 mongodb에 익숙하지 않으므로 mongodb의 불완전한 문서로 인해 시행 착오로 나를 버려서 스트레스를 받았다. 슬프게도 모든 시도가 오류없이 작동하지 않으므로 혼란 스럽다. 무슨 일이 벌어지고 있었고 무엇을 디버그 할 것인가 ...업 그레트 및 멀티 구문으로 몽고 업데이트
특정 기준에 일치하는 데이터베이스에서 여러 레코드를 업데이트하면 기존 레코드가 아닌 경우 해당 레코드를 새로 작성하면됩니다. 나는 업데이트, upsert 및 멀티와 함께 하나의 데이터베이스 액세스로 그것을 할 수 있다고 생각합니다. 나는 또한 여러 조합 또는 이전 버전과 같은 시도했습니다
dbschema.Person.update({ person_id: { $in: ["734533604" ,"701084015"] } }, { $set: {"scores": 1200} }, { options: { upsert: true, multi: true } });
: ...
이dbschema.Person.update({ person_id: { $in: ["734533604" ,"701084015"] } }, { $set: {"scores": 1200} }, { upsert: true }, { multi: true });
그들 중 누구도 작동하지 않습니다를
을하시기 바랍니다 여기에 내가 함께 왔어요 무엇 이게 사소한 것들로 도와주세요 ... 난 쉽게 SQL에서 할 수 있지만, nosql thingy 너무 제한 날 .. 감사합니다!편집 :
이찾기에 동일한 쿼리가 완벽하게 작동합니다 :
는dbschema.Person.find({ person_id: { $in: ["734533604" ,"701084015"] } }, function (err, results) {
console.log('result: ' + results);
console.log('error: ' + err);
console.log('result length: ' + results.length);
});
편집 : 내가 만든 될 "을 (를) 찾을 수 없습니다"기록을 기대하고
하고, 발견 기록 될 업데이트되었습니다. 내 논리에 결함이있을 수 있으며 지금은 너무 혼란 스럽습니다.
원래 한 번에 하나의 레코드를 찾고 값을 변경하고 수정 된 각 레코드에 대해 save()를 호출했지만 배포를 위해 배포 한 경우 응답 시간이 수 백 시간 느려졌습니다. 특히 각 요청마다 업데이트 할 레코드가 수백 개있을 때 특히 그렇습니다.
그런 다음 find() + $ in이 발견되어 성능이 복원되고 이전 쿼리 (쿼리)보다 좋지만 업데이트가 여전히 느려집니다. 따라서 모든 문서를 업데이트하는 방법을 찾고 있습니다. 언제 CASE THEN 하나 개의 쿼리에 ..
는 제가 일반적으로 SQL에서 할 것은 예 ... UPDATE를 사용하고 있습니다 :
는 불가능합니다 –
몇 가지 문제가 있지만 구문 적이지만 다른 디자인이 있습니다. 2 개의 일치하는 레코드를 찾고 있는데 아무 것도 발견되지 않으면 두 레코드가 모두 생성되기를 기대합니까? 두 가지 중 하나가 발견되면, 하나는 업데이트되고 하나는 생성되기를 기대합니까? Upsert는 최대 하나의 새 레코드를 만들 수 있으므로 이것이 멀티 및 업셋이 때때로 함께 이해할 수없는 이유입니다. –
예, 찾을 수없는 경우 둘 다 생성 될 것으로 예상됩니다. 하나가 발견되면 업데이트되고 발견되지 않은 것들이 생성됩니다. 당신이 맞습니다. 나는 혼란스럽고 아마도 내 논리는 다음과 같이 결함이 있습니다. 글쎄 ..하지만 내가 왜 이런 식으로하려고하는지 설명 할께. – Zennichimaro