2016-09-13 8 views
0

mongodb native 및 Node.js 6.5.0을 사용하고 있습니다.mongo 데이터베이스 내의 현재 오브젝트에 데이터를 푸시 할 수 없습니다.

{ 
    "_id" : ObjectId("57d7d294d96a73d128c46db9"), 
    "id" : "105862592064", 
    "labels" : [ 

    ] 
} 

I는 (발견 된 각 사용자에 대한) 루프가이 API의 데이터를 얻을하고 어레이 타입의 객체 속성에 밀어 :

난으로 구조화하여 MongoDB에서 사용자 객체를 갖는다. 사용자 ID는 user.id이고 푸시 할 데이터는 resp.labels입니다.

내 코드입니다 : 그것은 오류를 반환하지 않습니다

db.collection('users').update(
      {"id":user.id}, 
      {"$push":{"users.labels":resp.labels}} 
) 

, 어느 쪽도 아니는 업데이트 객체를한다. 나는 무엇을 잘못 했는가?

+0

db.collection ('사용자') 업데이트 ( . {_id : user.id, 라벨 : []}, 을 {$ 설정 : { " 레이블. $ ": resp.labels}} ) 시도해보십시오 –

답변

1

$push 배열에 하나의 요소를 추진위한 시도. $push$each을 함께 사용하면 여러 요소를 푸시 할 수 있습니다. 또한,이 켜지지 안 오브젝트 레이블 주위에 인용 :

db.collection('users').update(
     { id:user.id }, 
     { $push: { labels: { $each: resp.labels } } } 
) 
0

{upsert:true}을 포함하는 것을 시도하십시오 : 이미 존재하지 않는 경우

db.collection('users').update(
      {"id":user.id}, 
      {"$push":{"users.labels":resp.labels}}, 
      {"upsert": true} 
); 

Upsert이 새 값을 삽입합니다.

+0

3 번 줄에 구문 오류가 있습니다. 편집을 sugggested했습니다. – Kunok

+0

그러나 문제가 있습니다. 사용자라는 새로운 속성을 생성하고 사용자 객체 내에 레이블을 포함하는 레이블 객체를 생성합니다. – Kunok

1

$set

db.collection('users').update(
     {"id":user.id}, 
     {$set:{"users.labels":"hola"}}) 
2
Try this: 

db.collection('users').update(
      {"id":user.id},, 
      { 
      $push: { 
       labels: { 
        $each: //yourArray 
       } 
      } 
      } 
     );