toLong(집계)
정의
행동
다음 표에는 로 변환할 수 있는 입력 유형이 나열되어 있습니다.
입력 유형 | 행동 |
---|---|
부울 | Returns Long(0) for false .Returns Long(1) for true . |
Double | 잘린 값을 반환합니다. 잘린 double 값은 정수의 최소값과 최대값 내에 속해야 합니다. 최소 정수 값보다 작거나 최대 정수 값보다 큰 double 값은 변환할 수 없습니다. |
10진수 | 잘린 값을 반환합니다. 잘린 10진수 값은 정수의 허용 범위 내에 있어야 합니다. 최소 정수 값보다 작거나 최대 정수 값보다 큰 더블 값은 변환할 수 없습니다. |
Integer | int 값을 길이로 반환합니다. |
Long | 아니요. 긴 값을 반환합니다. |
문자열 | 문자열의 숫자 값을 반환합니다. 문자열 값은 기본 10 길이여야 합니다(예: 부동소수점, 10진수, 10이 아닌 밑수의 문자열 값(예: |
날짜 | Date를 epoch 이후의 밀리초 수로 변환합니다. |
다음 표에는 더블로 변환하는 몇 가지 예가 나와 있습니다:
예시 | 결과 |
---|---|
{ $toLong: true } | Long("1") |
{ $toLong: false } | Long("0") |
{ $toLong: 1.99999 } | Long("1") |
{ $toLong: NumberDecimal("5.5000") } | Long("5") |
{ $toLong: NumberDecimal("9223372036854775808.0") } | 오류 |
{ $toLong: NumberInt(8) } | Long(8) |
{ $toLong: ISODate("2018-03-26T04:38:28.044Z") } | Long("1522039108044") |
{ $toLong: "-2" } | Long("-2") |
{ $toLong: "2.5" } | 오류 |
{ $toLong: null } | null |
예시
다음 문서를 사용하여 컬렉션 orders
를 생성합니다.
db.orders.insertMany( [ { _id: 1, item: "apple", qty: NumberInt(5) }, { _id: 2, item: "pie", qty: "100" }, { _id: 3, item: "ice cream", qty: NumberLong("500") }, { _id: 4, item: "almonds", qty: "50" }, ] )
orders
컬렉션에 대한 다음 집계 작업은 값을 기준으로 정렬하기 전에 qty
를 long으로 변환합니다.
// Define stage to add convertedQty field with converted qty value qtyConversionStage = { $addFields: { convertedQty: { $toLong: "$qty" } } }; // Define stage to sort documents by the converted qty values sortStage = { $sort: { "convertedQty": -1 } }; db.orders.aggregate( [ qtyConversionStage, sortStage ])
이 작업은 다음 문서를 반환합니다.
{ _id: 3, item: 'ice cream', qty: Long("500"), convertedQty: Long("500") }, { _id: 2, item: 'pie', qty: '100', convertedQty: Long("100") }, { _id: 4, item: 'almonds', qty: '50', convertedQty: Long("50") }, { _id: 1, item: 'apple', qty: 5, convertedQty: Long("5") }
참고
변환 작업에 오류가 발생하면 집계 작업이 중지되고 오류가 발생합니다. 이 동작을 재정의하려면 $convert
를 대신 사용하세요.