2016-08-16 4 views
10

node.js와 Mongo.db (저는 Mongo에 새로 추가되었습니다)를 사용하고 있습니다.MongoDb : 배열에 요소가 없으면 추가하십시오.

Tag : { 
    name: string, 
    videoIDs: array 
} 
아이디어는

는, 서버가 동일한 이름을 가진 태그를 찾아에 있는지 확인해야하며,이 JSON으로 JSON 같은

JSON: { 
    name: "sport", 
    videoId: "34f54e34c" 
} 

를 수신 :이 같은 문서가 배열에 videoId이 있으면 배열에 삽입하십시오.

배열을 확인하고 데이터를 추가하려면 어떻게해야합니까?

+0

'배열에는 videoId가 있습니다. 어떤 배열에 대해 이야기하고 있습니까? – Shrabanee

답변

25

연산자를 사용하여 요소를 배열에 추가하기 전에 $addToSet 연산자를 사용할 수 있습니다. 이 업데이트 문 예에서

db.tags.update(
    {name: 'sport'}, 
    {$addToSet: { videoIDs: "34f54e34c" } } 
); 

는 MongoDB의 이름 == '스포츠'와 일치하는 TAG 문서를 찾은 다음 videoIDs 배열 '34f54e34c을'가 포함되어 있는지 여부를 확인합니다. 그렇지 않은 경우 배열에 추가하십시오.

자세한 내용은 $ addToSet here을 참조하십시오.

+0

@albert, 네, 하나의 요소를 삽입 할 수 있습니다. "videoIDs"는 배열이고 "34f54e34c"문자열이 없으면 삽입하려고합니다. 맞습니까? – yellowB

+0

작동합니다. 중복되지 않도록 새 ID를 추가합니다. – albert

+2

'videoIDs'필드가 존재하지 않으면 어떻게해야합니까? –

1

나는 그것을 테스트하지 못했지만, 당신이 뭔가를 시도 할 수 있습니다 :

yourDb.find({ name: "sport", 
       videoIDs: { $in: ["34f54e34c"] } }) 
     .update({$addToSet: { videoIDs: "34f54e34c" }}); 

어떻게해야하는 경우 : nodeJs 구현에 MongoDB를, 당신은 시작에 :

http://jsfiddle.net/1ku0z1a1/

2

$ addToSet 연산자는 문서의 빈 배열이나 기존 배열을 확인합니다.

db.col_name.update({name :"name_for_match"},{$addToSet : { videoId : "video_id_value"}}) 
관련 문제