iconv를 통해 UTF8로 변환 한 다음 커다란 csv 파일을 가지고 Mongo에로드했습니다. ReactiveMongo/Scala를 사용하여 데이터를 쿼리하는 동안 많은 오류가 발생합니다. 일부 레코드는 BSONDouble 및 BSONLong으로 가치가있는 것으로 보입니다. 쿼리를 검색하면 오류가 발생합니다. 전환을 시도하면 BSONDouble을 BSONLong 또는 다른 방법으로 변환 할 수 없습니다. 어떤 아이디어?ReactiveMongo BSONDouble 대 BSONLong
답변
이것은 토끼 구멍에서 멀리 떨어진 곳에서 나를 데려갔습니다. mongoimport가 저장 한 숫자 중 일부는 BSONDouble 또는 BSONLong 또는 BSONInteger 였을뿐만 아니라 일부는 BSONString이었습니다. 처음에는 BSONNumberLike 검사를 사용했지만 작은 데이터 세트에서 작동했지만, mongo에서 더 큰 데이터 세트로 전환하면 Null 포인터 예외로 인해 충돌했습니다. 나는 [BSONLong] .colName을 doc.get 사용 된
case class Aggsecrow (
Strategy: String,
Security: String,
LocalPosn: Double,
USDPosn: Double,
CurrentPx: Double,
USDMV: Double,
PNL: Double
)
object Aggsecrow {
implicit object AggsecrowBSONReader extends BSONDocumentReader[Aggsecrow] {
def safeNumGet(field: String, doc: BSONDocument): Double = {
var dtry = doc.getAsTry[BSONNumberLike](field)
var d = 0.0
if(dtry.isFailure) {
val stry = doc.getAsTry[BSONString](field)
val strConv = stry.get.value
val doubleConv = Double.valueOf(strConv).longValue
d = doubleConv.doubleValue
} else {
d = try {dtry.get.toDouble} catch { case _ => 0.0}
}
d
}
def read(doc: BSONDocument) :Aggsecrow = {
Aggsecrow(
doc.getAsTry[String]("Strategy").get,
doc.getAsTry[String]("Security").get,
safeNumGet("LocalPosn",doc) ,
safeNumGet("USDPosn",doc) ,
safeNumGet("Current",doc) ,
safeNumGet("USDMV",doc) ,
safeNumGet("PNL",doc) ,
}
}
일부 코드가 표시되지 않으면 도움이되지 않습니다. 귀하의 문서에 대해 BSONDocumentReader
을 쓰고 있다고 가정하고 A
이 BSONDouble
또는 BSONLong
인 BSONDocument.getAs[A]
으로 전화를 걸고 유형이 일치하지 않으면 실패합니다.
BSONDocument.getAsTry[A]
을 사용하는 편도는 Try[A]
을 반환하고 Failure
인 경우 다른 유형을 시도해야한다는 것을 알고 있습니다.
예 : 더 읽기 및 반환 BSONs을보고 한 후,이 코드는 더 방탄 (또는 적어도 내 대규모 데이터 세트와 함께 일하고있다) 것 같다 나는 오늘 getAsTry로 전환했다. 나는 일할 수도있는 또 다른 길을 가지고있다. 지금 테스트하기 –
- 1. ReactiveMongo & JSON4S
- 2. 오류 : reactivemongo
- 3. ReactiveMongo : Manage Sequence 필드
- 4. Akka 및 ReactiveMongo
- 5. ReactiveMongo : 새 문서
- 6. ReactiveMongo + Play 일반 NullPointerException
- 7. 어떻게 $하고 reactivemongo
- 8. ReactiveMongo 공통 기능
- 9. ReactiveMongo Play Framework의 JSON
- 10. Reactivemongo QueryOpts.batchSizeN not work
- 11. Reactivemongo and Play, 체인 쿼리
- 12. Reactivemongo 내포 된 JSON 구조체
- 13. ReactiveMongo + TypeSafe Stack => 프로덕션?
- 14. ReactiveMongo 강제 쿼리를 슬레이브에서 실행합니다.
- 15. Play 2.1 및 reactivemongo 0.8 카운트 문서
- 16. ReactiveMongo 데이터베이스 덤프 (플레이 프레임 워크 2.5)
- 17. 실루엣이있는 여러 LoginInfos (play 2.3, reactivemongo)
- 18. ReactiveMongo BSON 쿼리에서 날짜를 비교하는 방법은 무엇입니까?
- 19. mongodb 집계 함수를 ReactiveMongo 및 scala로 변환
- 20. Reactivemongo : 발생하는 예외를 처리하는 방법 Iteratee.fold 내부
- 21. Play-Reactivemongo 플러그인을 사용하여 MongoDB _id를 매핑 하시겠습니까?
- 22. Bulk insert/Insert Many with Play Framework, ReactiveMongo
- 23. reactivemongo mongodb 드라이버에 대해`skip` (offset)을 어떻게 설정합니까?
- 24. 스칼라 플레이 ReactiveMongo - 임의의 쿼리 매개 변수 목록
- 25. Play 2.3.5 및 ReactiveMongo : MongoError [ '기본 노드를 사용할 수 없습니다!']
- 26. ReactiveMongo 및 GridFS를 사용하여 PlayFramework에서 업로드 된 이미지 크기 조정
- 27. 대 대 ë 대
- 28. 대 pymssql 대 pyodbc 대 adodbapi 대
- 29. 대 ID 대 UniqueID 대 ClientID 대 UniqueClientID 대 StaticClientID?
- 30. iPhone 대 XML 대 비누 대 JSON 대 RESTful
이 새로운 함수는 1e7과 같은 지수 함수를 처리합니다. –