2016-10-15 3 views
0

나는 학생을위한 클래스 배열에 클래스를 삽입하려고하는데, 클래스가 이미없는 경우에만 쓰려고한다. 나는 upsert가 이것을 처리한다고 읽었지 만 이미 존재하는지 여부에 관계없이 배열에 클래스를 추가합니다. 누군가 나를 올바른 방향으로 이끌 수 있습니까?이미 뭔가가없는 경우에만 배열에 추가 하시겠습니까?

Student.findOneAndUpdate(
    query, 
    {$push: {"classes": {class_id: class_id, class_title: class_title, class_instructor: class_instructor}}}, 
    {safe: true, upsert: true}, 
    callback 
); 
+0

'Student.findOneAndUpdate (query, {$ addToSet : {classes : theIdToAdd}}, 콜백); –

+0

여전히 그들을 추가하고 있습니다. –

+0

클래스가 아직 없으면 삽입하면 무엇을 의미합니까? 당신은 class_id 만 비교하거나 당신은 전체 클래스 개체를 고유 한가? –

답변

1

사용 $ 네브라스카

Student.findOneAndUpdate(
    {"classes.class_id":{$ne: class_id}} 
    {$addToSet: {"classes": {class_id: class_id, class_title: class_title, class_instructor: class_instructor}}}, 
    {safe: true,}, 
    callback 
) 

;

관련 문제