MongoDB upsert가 삽입 또는 업데이트를 수행했는지 확인합니다.
서류상으로는 이것을 찾을 수 없습니다.Mongo가 upsert 작업에서 insert 또는 update를 실행했는지 알 수 있는지 알고 싶습니다.
예, 있습니다. 안전한 호출(또는 getLastError) 시 업데이트 기능은 업서트 필드와 업데이트된 배열을 반환합니다.기존 필드.
여기에서 PHP 버전을 읽을 수 있습니다. http://php.net/manual/en/mongocollection.insert.php 은 맨 아래에 있습니다.
다음 문서에 나와 있는 것처럼upserted
:
업버트가 발생한 경우 이 필드에는 새 레코드의 _id 필드가 포함됩니다.upserts의 경우 이 필드 또는 업데이트됨오류가 발생하지 않는 한 기존이 존재합니다.
그래서 upserted는 다음을 포함합니다._id
삽입이 완료되었거나 증가할 경우 새 레코드의updatedExisting
기록을 갱신한 경우.
저는 모든 운전자들에게 비슷한 것이 나타날 것이라고 확신합니다.
편집
그것은 실제로 부울이 될 것입니다.updatedExisting
의 분야.true
또는false
참조용으로만 node.js에서:
collection.update( source, target, { upsert: true }, function(err, result, upserted) {
...
});
참조용으로만 Mongoose 3.6을 사용하는 node.js에서:
model.update( findquery, updatequery, { upsert: true }, function(err, numberAffected, rawResponse) {
...
});
RawResponse가 기존 문서를 업데이트했을 때 다음과 같이 나타납니다.
{ updatedExisting: true,
n: 1,
connectionId: 222,
err: null,
ok: 1 }
새 문서를 만들 때 다음과 같이 나타납니다.
{ updatedExisting: false,
upserted: 51eebc080eb3e2208a630d8e,
n: 1,
connectionId: 222,
err: null,
(두 경우 모두 해당 번호 = 1을 반환함)
답변은 "MongoDB Applied Design Patterns" Book에서 가져왔습니다! 업서트가 삽입인지 업데이트인지 확인합니다.
MongoDB 드라이버 사용3.5.9
Node.js에서, 나는 우리가 사용한 후에 관심이 있는 이러한 속성들이 있다는 것을 발견했습니다.updateOne
와 함께{ upsert: true }
:
{
modifiedCount: 0,
upsertedId: null,
upsertedCount: 0,
matchedCount: 1
}
uvert가 무언가를 삽입했을 때, 우리는 다음을 얻을 것입니다.upsertedCount > 0
그리고.upsertedId
새로 삽입한 문서 ID를 보유합니다.uvert가 무언가를 수정했을 때, 우리는 다음을 얻을 것입니다.modifiedCount > 0
.
모든 CRUD 작업에 대한 튜토리얼은 여기에 있습니다. https://mongodb.github.io/node-mongodb-native/3.6/tutorials/crud/
언급URL : https://stackoverflow.com/questions/13955212/check-if-mongodb-upsert-did-an-insert-or-an-update
'programing' 카테고리의 다른 글
PostgreSQL: Postgre의 암호 재설정 중Ubuntu의 SQL (0) | 2023.05.21 |
---|---|
"관리되는" 코드란 정확히 무엇입니까? (0) | 2023.05.21 |
키 필드로 MongoDB 컬렉션의 모든 중복 문서 찾기 (0) | 2023.05.21 |
도커 컨테이너에서 로컬 mongodb에 연결 (0) | 2023.05.21 |
공식 R1C1의 기능은 무엇입니까? (0) | 2023.05.21 |