program story

Mongo에서 $ addToSet에 대한 키를 지정할 수 있습니까?

inputbox 2020. 11. 21. 14:10
반응형

Mongo에서 $ addToSet에 대한 키를 지정할 수 있습니까?


문서가 있습니다.

{ 'profile_set' :
  [
    { 'name' : 'nick', 'options' : 0 },
    { 'name' : 'joe',  'options' : 2 },
    { 'name' : 'burt', 'options' : 1 }
  ] 
}

이름이 이미 존재하지 않는 경우 (옵션에 관계없이) profile_set 세트에 새 문서를 추가하려고합니다.

따라서이 예제에서 추가하려고하면 :

{'name' : 'matt', 'options' : 0}

추가해야하지만

{'name' : 'nick', 'options' : 2}

이 (가 ) 다르 nick더라도 이름이있는 문서가 이미 존재하므로 아무 작업도하지 않아야합니다 option.

Mongo는 전체 요소와 일치하는 것으로 보이며 동일한 지 확인하고 결국

profile_set containing [{'name' : 'nick', 'options' : 0}, {'name' : 'nick', 'options' : 2}]

$ addToSet으로이 작업을 수행 할 수있는 방법이 있습니까? 아니면 다른 명령을 푸시해야합니까?


이미있는 update경우 업데이트를 방지하는 쿼리 개체 로을 한정 할 수 있습니다 . 셸에서 :nameprofile_set

db.coll.update(
    {_id: id, 'profile_set.name': {$ne: 'nick'}}, 
    {$push: {profile_set: {'name': 'nick', 'options': 2}}})

이 단지를 수행 할 수 있도록 $push일치와 문서에 대한 _id시간과 위치가없는 profile_set요소 name입니다 'nick'.

참고 URL : https://stackoverflow.com/questions/14527980/can-you-specify-a-key-for-addtoset-in-mongo

반응형