하나의 필드를 업데이트하거나없는 경우 여러 개 삽입

Kaytrance

Upsert 기능은 업데이트 방법에서 훌륭하지만 한 가지 큰 단점이있는 것 같고 합리적인 해결책을 찾을 수 없습니다.

문제는 쿼리 기준과 일치하는 결과가 있지만 행이없는 경우 하나의 필드 만 업데이트하고 싶습니다. 많은 필드를 삽입하고 싶습니다.

예를 들어 find ({name : John, surname : Connor}) 가 결과를 반환하면 {age : 33} 와 같이 그에게 새로운 나이 만 설정하고 싶지만 결과가 없으면 많은 필드를 삽입하고 싶습니다. like {이름 : John, 성 : Connor, 나이 : 32, 역할 : 사령관, 캐릭터 : 신중함, 취미 : '터미네이터 죽이기'}

하나의 쿼리에서 이것을 달성하는 예쁜 방법이 있습니까? 아니면 유일한 해결책은 스트레이 포워드 (straighforward)입니다. 즉, 찾은 결과 수를 찾아서 확인하고이를 기반으로 삽입 또는 업데이트합니까?

편집 : 나는 이것을 한 단계로 만드는 능력의 필요성을 설명하기 위해 추가했습니다. 두 단계 (먼저 찾기 후 삽입 / 업데이트)로 만드는 솔루션은 하나를 찾고 업데이트 / 삽입하는 작업을 수행 할 때 좋지만이를 수행하려는 작업자가 1000 명 정도일 경우 실패합니다. 이름 -Surname 쌍에 대한 고유 색인을 작성하지 않는 한 (처음 몇 명의 작업자가 결과를 찾지 못하고 모두가 새 행을 삽입 할 때) 데이터베이스에 많은 John Connors가있을 수 있습니다. 그러나 나는 그렇게하지 않는 해결책을 찾고 있습니다.

WiredPrairie

문서에있는 정확한 값을 사용하여 특정 문서를 선택하는 데 충분한 기준을 일치시켜야하며 , 문서가 아직없는 경우 문서를 작성하는 데 필요한 모든 데이터 를 전송 해야 합니다. 또한 upsert문서가없는 경우 문서를 만드는 옵션 을 지정해야 합니다.

update( {name: "John", surname: "Connor" }, 
        { $set :
             {name: "John", surname: "Connor", age: 32, terminated: false}},
        { upsert: true })

사용의 본질도 이해해야합니다 upsert. 쿼리는 고유 한 필드에 의존해야합니다. 그렇지 않으면 일치하는 데이터가있는 여러 문서로 끝날 수 있습니다.

경고 동일한 문서를 두 번 이상 삽입하지 않으려면 쿼리 필드가 고유하게 인덱싱 된 경우에만 upsert : true를 사용하십시오.

MongoDB는 쿼리 결과에 따라 문서의 일부만 조건부로 업데이트하는 방법을 지원하지 않습니다. 다음 을 허용하는 것은 없습니다 .

updateIf(query, updateIfTrue, updateIfFalse, options)

부분을 ​​선택적으로 업데이트하려면 여러 단계를 수행하거나을 사용하여 전체 문서를 업데이트해야합니다 $set.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

mysql 데이터베이스의 테이블에 존재하지 않는 경우 여러 레코드를 업데이트하거나 삽입하십시오.

분류에서Dev

데이터베이스에없는 경우 여러 개를 삽입하는 방법

분류에서Dev

여러 개를 선택한 후 하나의 열 삽입

분류에서Dev

B와 C라는 두 테이블 중 하나에 값이있는 경우 테이블 A의 값을 사용하여 데이터를 삽입하거나 업데이트하려면 어떻게해야합니까?

분류에서Dev

SQLite : 존재하는 경우 업데이트하거나 다른 테이블에서 선택하여 삽입

분류에서Dev

SQL Server : 모든 값이 삽입 될 때까지 하나의 값이 동일하게 유지되는 경우 문 여러 개 삽입

분류에서Dev

SQL Server : 모든 값이 삽입 될 때까지 하나의 값이 동일하게 유지되는 경우 문 여러 개 삽입

분류에서Dev

SQL 테이블에 삽입하거나 레코드가있는 경우 업데이트

분류에서Dev

값이 여러 개인 경우 쉼표 구분을 삽입하는 방법

분류에서Dev

mongodb를 사용하여 배열에 값이없는 경우 업데이트에 대한 하나의 작업

분류에서Dev

MySQL에 여러 데이터 삽입 및 존재하는 경우 업데이트

분류에서Dev

업데이트 (존재하지 않는 경우) SQL Server에서 XML 입력 매개 변수를 사용하여 삽입

분류에서Dev

MySQL | 필드가있는 경우 삽입의 레코드 삽입 업데이트

분류에서Dev

Spring MVC / Thymeleaf-하나의 입력 필드를 사용하여 두 개의 다른 테이블에 삽입하는 방법은 무엇입니까?

분류에서Dev

여러 값이있는 선택한 필드 만 구분 기호를 사용하여 하나의 값에 삽입

분류에서Dev

두 개의 점이 포함 된 양식의 텍스트 필드에서 데이터를 표에 삽입해야하는 경우 문자가 잘립니다.

분류에서Dev

SQL 인터뷰-레코드가 없거나 여러 테이블을 사용하여 개수가 0 인 경우 레코드를 얻는 방법

분류에서Dev

Apex 컨트롤러의 조회 필드를 사용하여 사용자 지정 개체에 데이터를 삽입하는 방법

분류에서Dev

jComboBox에 여러 필드를 표시하고 데이터베이스에 하나의 필드 만 삽입하는 방법은 무엇입니까?

분류에서Dev

하나의 컨트롤러와 하나의 뷰를 사용하여 두 테이블에 데이터 삽입

분류에서Dev

필드 매개 변수에 따라 업데이트하거나 삽입해야하는 테이블이 있습니다.

분류에서Dev

여러 선택 옵션 중 하나를 선택한 경우에만 입력 필드를 채워야합니다.

분류에서Dev

데이터 프레임의 모양을 변경하거나 헤더를 기준으로 UnPivot을 수행 한 다음 두 개의 열을 삽입하는 방법

분류에서Dev

존재하지 않는 경우 데이터를 삽입하고 (2 개의 테이블에서) 그렇지 않으면 업데이트합니다.

분류에서Dev

IDENTIFIER 생성 ---- php를 사용하여 2 개의 양식 데이터를 하나의 테이블에 삽입

분류에서Dev

codeigniter의 한 열에 여러 필드 데이터를 삽입하는 방법

분류에서Dev

CD가 하나만 삽입되었지만 컴퓨터가 여러 개의 CD를 감지합니까?

분류에서Dev

하나의 값만 변경하여 테이블에 여러 행 삽입

분류에서Dev

하나의 모델 폼에서 여러 모델을 사용하고 하나의 사용자 입력 필드를 두 개의 모델에 저장

Related 관련 기사

  1. 1

    mysql 데이터베이스의 테이블에 존재하지 않는 경우 여러 레코드를 업데이트하거나 삽입하십시오.

  2. 2

    데이터베이스에없는 경우 여러 개를 삽입하는 방법

  3. 3

    여러 개를 선택한 후 하나의 열 삽입

  4. 4

    B와 C라는 두 테이블 중 하나에 값이있는 경우 테이블 A의 값을 사용하여 데이터를 삽입하거나 업데이트하려면 어떻게해야합니까?

  5. 5

    SQLite : 존재하는 경우 업데이트하거나 다른 테이블에서 선택하여 삽입

  6. 6

    SQL Server : 모든 값이 삽입 될 때까지 하나의 값이 동일하게 유지되는 경우 문 여러 개 삽입

  7. 7

    SQL Server : 모든 값이 삽입 될 때까지 하나의 값이 동일하게 유지되는 경우 문 여러 개 삽입

  8. 8

    SQL 테이블에 삽입하거나 레코드가있는 경우 업데이트

  9. 9

    값이 여러 개인 경우 쉼표 구분을 삽입하는 방법

  10. 10

    mongodb를 사용하여 배열에 값이없는 경우 업데이트에 대한 하나의 작업

  11. 11

    MySQL에 여러 데이터 삽입 및 존재하는 경우 업데이트

  12. 12

    업데이트 (존재하지 않는 경우) SQL Server에서 XML 입력 매개 변수를 사용하여 삽입

  13. 13

    MySQL | 필드가있는 경우 삽입의 레코드 삽입 업데이트

  14. 14

    Spring MVC / Thymeleaf-하나의 입력 필드를 사용하여 두 개의 다른 테이블에 삽입하는 방법은 무엇입니까?

  15. 15

    여러 값이있는 선택한 필드 만 구분 기호를 사용하여 하나의 값에 삽입

  16. 16

    두 개의 점이 포함 된 양식의 텍스트 필드에서 데이터를 표에 삽입해야하는 경우 문자가 잘립니다.

  17. 17

    SQL 인터뷰-레코드가 없거나 여러 테이블을 사용하여 개수가 0 인 경우 레코드를 얻는 방법

  18. 18

    Apex 컨트롤러의 조회 필드를 사용하여 사용자 지정 개체에 데이터를 삽입하는 방법

  19. 19

    jComboBox에 여러 필드를 표시하고 데이터베이스에 하나의 필드 만 삽입하는 방법은 무엇입니까?

  20. 20

    하나의 컨트롤러와 하나의 뷰를 사용하여 두 테이블에 데이터 삽입

  21. 21

    필드 매개 변수에 따라 업데이트하거나 삽입해야하는 테이블이 있습니다.

  22. 22

    여러 선택 옵션 중 하나를 선택한 경우에만 입력 필드를 채워야합니다.

  23. 23

    데이터 프레임의 모양을 변경하거나 헤더를 기준으로 UnPivot을 수행 한 다음 두 개의 열을 삽입하는 방법

  24. 24

    존재하지 않는 경우 데이터를 삽입하고 (2 개의 테이블에서) 그렇지 않으면 업데이트합니다.

  25. 25

    IDENTIFIER 생성 ---- php를 사용하여 2 개의 양식 데이터를 하나의 테이블에 삽입

  26. 26

    codeigniter의 한 열에 여러 필드 데이터를 삽입하는 방법

  27. 27

    CD가 하나만 삽입되었지만 컴퓨터가 여러 개의 CD를 감지합니까?

  28. 28

    하나의 값만 변경하여 테이블에 여러 행 삽입

  29. 29

    하나의 모델 폼에서 여러 모델을 사용하고 하나의 사용자 입력 필드를 두 개의 모델에 저장

뜨겁다태그

보관