programing

mongodb 셸 쿼리에서 GUID를 사용하는 방법

minimums 2023. 7. 7. 18:54
반응형

mongodb 셸 쿼리에서 GUID를 사용하는 방법

MongoDB 쉘을 사용할 때 가이드 데이터 유형(내 컬렉션에서 _id로 사용한 적이 있음)을 어떻게 사용합니까?

다음 형식이 작동하지 않습니다.

>db.person.find({"_id","E3E45566-AFE4-A564-7876-AEFF6745FF"});

감사해요.

쉽게 사용할 수 있습니다.

.find({ "_id" : CSUUID("E3E45566-AFE4-A564-7876-AEFF6745FF")})

_id 값을 문자열이 아닌 BinData 인스턴스와 비교해야 합니다.안타깝게도 BinData 생성자는 16진수 문자열 대신 Base64 문자열을 사용합니다.

GUID 값 끝에 두 개의 16진수가 없으므로 이 예에서는 "00"이라고 가정합니다.다음 값은 동일합니다.

16진수: "E3E45566-AFE4-A564-7876-AEFF6745FF00"(대시 무시)

base64: "ZlXk4+SvZKV4dq7/Z0X/AA=="

따라서 다음과 같은 질문을 해야 합니다.

>db.person.find({_id : newBinData (3, "ZlXk4+SvZKV4dq7/Z0X/AA==")}

이진 하위 유형이 3으로 올바르게 설정된 것으로 가정합니다.그렇지 않은 경우 데이터를 생성하는 데 사용된 드라이버는 무엇입니까?

쿼리 앞에 다음과 같은 js 함수를 사용할 수 있습니다.

function LUUID(uuid) {
    var hex = uuid.replace(/[{}-]/g, ""); // removes extra characters
    return new UUID(hex); //creates new UUID
}

db.person.find({"_id" : LUUID("E3E45566-AFE4-A564-7876-AEFF6745FF"});

쿼리를 수행하기 전에 함수를 .js 파일에 저장하여 로드하거나 열 수 있으며, 결과에서 값을 복사할 경우 다음을 사용하여 함수의 이름을 변경해야 합니다.

  • 레거시 UUID의 LUUID
  • Java 인코딩을 위한 JUUID
  • .net 인코딩을 위한 NUUID
  • c# 인코딩을 위한 CSUUID
  • 파이썬 인코딩을 위한 PYUUID

오래된 문제인 것은 알지만, 추가적인 필요 없이 다음과 같은 문제를 사용할 수 있습니다.

find({_id:UUID('af64ab4f-1098-458a-a0a3-f0f6c93530b7')})

split() 및 join() 해결 방법을 사용하여 이 문제를 해결할 수 있습니다.

예를 들어 "E3E45566-AFE4-A564-7876-AEFF6745"를 사용하는 경우FF" 16진수 값:-안에서.UUID()함수, 반환되지 않습니다.BinData몽고에 있으므로 모든 것을 제거해 보십시오.-로 넘어가기 전에UUID기능.

db.person.find({"_id":UUID("E3E45566-AFE4-A564-7876-AEFF6745FF".split("-").join(''))});

또는 변수를 정의하여 여러 줄로 정렬합니다.

var uuid = UUID("E3E45566-AFE4-A564-7876-AEFF6745FF".split("-").join(''))
db.person.find({"_id":uuid});

또는 간단한 함수를 만들어도 됩니다.

function BUUID(uuid){
    var str = uuid.split("-").join('');
    return new UUID(str);
}
db.person.find({"_id": BUUID("E3E45566-AFE4-A564-7876-AEFF6745FF")}).pretty();

언급URL : https://stackoverflow.com/questions/5652107/how-do-i-use-a-guid-in-a-mongodb-shell-query

반응형