:이 문은 X 값을 설정하지만 그 이후 것은 단지 업데이트됩니다 처음 실행: 중복 키 갱신에 삽입 한 [원자] 문에 몽고이 할 수있는 방법
insert mytable set MyUniqueKey = ?, X = ? on duplicate key update Y = ?
Y 값.
MyUniqueKey 만 고유 키의 일부이며 중복을 검색해야합니다.
:이 문은 X 값을 설정하지만 그 이후 것은 단지 업데이트됩니다 처음 실행: 중복 키 갱신에 삽입 한 [원자] 문에 몽고이 할 수있는 방법
insert mytable set MyUniqueKey = ?, X = ? on duplicate key update Y = ?
Y 값.
MyUniqueKey 만 고유 키의 일부이며 중복을 검색해야합니다.
나는이 질문을 mongodb 사용자 그룹에게 물었습니다. 대답은 불가능했기 때문에 이것은 issue입니다.
Update
명령에서 upsert option을 찾고 있습니다. 문서는 여기 충분해야합니다.
사례를 제공해 주시겠습니까? 이미 여러 옵션 조합을 시도했지만 삽입시 설정할 필드를 선택할 수는 없지만 업데이트시에는 제외됩니다. –
첫 번째 삽입시에만 설정되는 필드가 있지만 업데이트가 적용되지 않는 필드가 있습니다. –
'update' 부분의 일부 대신'query' 부분의'Y' 부분을 만들어야합니다. –
에서 나는 대신에 "MYTABLE"의 "MyCollection"를 부를 것이다. 다음 수행 할 수 있습니다은 기본적으로 $ 세트 문서가 존재하지 않는 경우를 제외하고, 항상 실행됩니다. 그런 다음 $ setOnInsert가 실행됩니다.db.mycollection.update( { MyUniqueKey: "?" }, { $set: {"y": "?"}, $setOnInsert: { MyUniqueKey: "?", "x": "?", }, { upsert: true } )
이 문제는 MongoDB 2.4에서 끝났으며 이제 ['$ setOnInsert'] (http://docs.mongodb.org/manual/reference/operator)를 사용할 수있다./setOnInsert /). – str