2017-12-28 2 views
0

내 osx 응용 프로그램과 mongodb 사이의 인터페이스로 mongokitten을 사용하고 있습니다. 날짜를 UInt64로 db.In Db에 저장합니다.이 형식은 NumberLong ("1514450415154")으로 저장됩니다. 데이터를 삽입하고 읽을 때 아무런 문제가 없습니다. db는 두 경우 모두 값이 1514450415154 일 뿐이므로 쿼리하는 동안 값이 충분하지 않습니다. 쿼리를 작성할 수 없습니다. 누군가 가능한 해결책을 찾도록 도와 줄 수 있습니까?mongodb에서 UInt64로 저장된 값을 쿼리하는 방법은 무엇입니까?

mongokitten 주요 버전 : 4, swift 버전 : 3, xcode 9. 예 : Encodable 및 Decodable 프로토콜을 사용하기 위해 Codable을 사용하고 있습니다.

샘플 코드 (* date.timeIntervalSince1970 1000.0)를 UINT64 = UINT64;

는 dateUint하자

"_id": 하자 쿼리 : 쿼리 = 쿼리 (aqt : .greaterThanOrEqual (키 : "super.upd_dtm"발!로 dateUint 원시)) DB에 저장

구조 "093FF386-1D53 -4DFC-AC56-D2B778C7D6FE " "수퍼 "{ "rel_ver ":" " "crt_in ":"macpro " "crt_by ":"ABC " "lst_syn "NumberLong으로 ("1514875651306 ") "is_drty"거짓 "crt_dtm"NumberLong으로 ("1514875651306") "upd_dtm"NumberLong으로 ("1514875651306") "doc_ver"NumberLong으로 (0) 012,351,}, "prj_nme": "프로젝트 1", "prj_id": "4545C803-D41E-4A4F-9409-538FC183D8B3"

답변

0

당신은 내가 제대로 대답 할 수 있도록 귀하의 요구 사항에 대한 몇 가지 자세한 정보를 제공해야합니다 너의 질문.

  • 어떤 MongoKitten 버전을 사용하고 있습니까?
  • 어떤 스위프트 버전을 사용하고 있습니까?
  • 코드 가능 코드를 사용하고 있습니까?
  • 문제를 재현하는 코드를 게시 할 수 있습니까?

UInt64는 표준 MongoDB 유형이 아니지만 Int64 및 Int32입니다. MongoKitten은 코드 가능 API에서 UInt64를 numberlong (Int64)으로 변환하려고 시도합니다. BSON가 원시 형 지원에 비 codable API를 당신은 아주 명시 적으로 당신은 당신의 쿼리에서 정상 Int를 사용할 수 있으며, UINT64을 변환 할 자신


이 필요합니다. Swift를 실행하는 (거의) 모든 장치/서버는 64 비트이기 때문에 MongoKitten은 32 비트를 지원하지 않습니다 (작동 할 수도 있음). 즉 IntInt64과 같습니다. MongoDb 내부에 날짜를 에포크 정수가 아닌 날짜로 저장하면 쿼리를 포함하여 MongoKitten 내에 Foundation.Date을 사용할 수 있습니다.

let epoch = date.timeIntervalSince1970 * 1000.0) 
let results = try collection.find("super.upd_dtm" >= epoch) 
+0

당신은 내가 어떤 예를 찾을 수 없습니다? MongoDB를에 UINT64로 저장된 값을 조회하는, 또는 또한 MongoDB의에서 NumberLong으로의 인스턴스로 싸여 Int64 타입의 값을 쿼리하는 방법을 좀 도와 주 시겠어요 이러한 유형의 값을 쿼리하는 것과 관련된 mongokitten. – lakshmi

관련 문제