2014-05-24 7 views
0
에 배열 객체를 제거

나는 다음과 같은 스키마가 :MongoDB를 : 몽구스

var userSchema = mongoose.Schema({ 

    local   : { 
     email  : String, 
     password  : String, 
     movies  : [{ 
          moviename : String, 
          rating  : Number 
         }], 
    } 

}); 

을 그리고 배열에 항목을 추가하려면 다음과 같은 방법을 사용합니다

user.local.movies.push({ moviename : "Top Gun", rating  : 80}); 
user.save(function (err) { 
       if (err) 
        console.log("Error in saving"); 

       res.end(0); 
      }); 

하지만 항목을 제거해야 너무. "moviename"이름으로 항목을 제거 할 수 있어야합니다. 나는 사용하여 시도 :

user.local.movies.pull({ moviename : "Top Gun"}); 

을했지만 작동하지 않았다.

배열에서 항목을 어떻게 제거 할 수 있는지 알려주십시오.

감사합니다.

+0

당신은''풀()''후) (저장 부릅니까? –

+0

예. 있습니다. 내가 푸시에했던 것과 동일합니다. – madu

답변

2

를 내가 사용하기 쉽게 생각 항상 작동하지 않는 대신 몽구스의 배열을 조작하는 방법의 명시 적 update 호출 기대 :

User.update({_id: user._id}, 
    {$pull: {'local.movies': {moviename: 'Top Gun'}}}, callback); 
1

이렇게하는 방법 중 하나는 인덱스를 찾을 수 있다고 가정하고 splice 함수를 사용하여 배열에서 요소를 제거하는 것입니다. 그래서 예를 들면 :

User.findOne(function(err, user) { 
    var movies, index; 

    movies = user.movies; 

    for (index = 0; index < movies.length; index++) { 
     if (movies[index].moviename === "Top Gun") { 
      break; 
     } 
    } 
    if (index !== movies.length) { 
     movies.splice(index, 1); 
    } 

    user.save(function(err, user) { 
     res.send(user); 
    }); 

}); 

(위의 코드는 하나의 사용자 및 하드 코드 제거하는 영화 이름이 작업을 수행합니다,하지만 당신은 아이디어를 얻을 것을 알고있다.)