2012-11-12 12 views

답변

59

는 단일 upsert으로 그 작업을 수행 할 수 있습니다

var obj = req.body; 
var id = obj._id; 
delete obj._id; 
if (id) { 
    Model.update({_id: id}, obj, {upsert: true}, function (err) {...}); 
} 

주의해야 할 점은 모델의 기본값 및 미들웨어는 (있는 경우)을 적용 할 수없는 것입니다.

몽구스 4.x의 업데이트

upsert 새 문서를 작성하는 경우, 당신은 이제 기본값을 적용 할 setDefaultOnInsert 옵션을 사용할 수 있습니다.

Model.update({_id: id}, obj, {upsert: true, setDefaultsOnInsert: true}, cb); 
+0

문제는 "OBJ"_id를 포함하고, 갱신의 경우에 나는 그것을 전에 업데이트를 제거 할 필요가 아니면 오류 – WHITECOLOR

+1

@WHITECOLOR 좋은 점 "허용되지 _id에 모"를 얻는다. 'update' 전에 제거하도록 코드를 업데이트했습니다. – JohnnyHK

+0

문질러가 있습니다. 나는 새로 생성 된 (존재하지 않는다면) Item이 obj._id와 동일한 _id를 가지길 원한다. 생성하기 전에 obj에서 _id를 제거하려면 mongo가 새로운 _id를 생성 할 것이다. – WHITECOLOR

관련 문제