動画情報を高評価数でソートできなかった件(解決済み)

# 概要
## 現象
YouTube Data APIのvideosで取得した動画情報内の高評価数とか再生数をサーバーサイドでソートしようとしたら正しくソートされなかった。

## 前提
取得したjsonをそのままMongoDBに登録している。

## 原因
YouTube Data APIから返却される該当値が(数値ではなく)文字列だったためorderの条件として想定通り処理されていなかった。

## 対策
取得時に数値化してMongoDBに登録することとした。


# 詳細

以下動画
[【みんなのリズム天国】アイドルのリズム感なめんなある！【ホロライブ/桃鈴ねね】](https://www.youtube.com/watch?v=XWBiPn7JOHM)

取得URL
https://www.googleapis.com/youtube/v3/videos?key={APIキー}&part=snippet,statistics,liveStreamingDetails&id=XWBiPn7JOHM

返却されたjson

```json
{
  "kind": "youtube#videoListResponse",
  "etag": "jkC6XVJMrVdQKxD3WAN4x-7zppY",
  "items": [
    {
      "kind": "youtube#video",
      "etag": "v08QiUlLitiOwvmSxXgj9UY73zY",
      "id": "XWBiPn7JOHM",
      "snippet": {
        "publishedAt": "2020-09-23T13:24:09Z",
        "channelId": "UCAWSyEs_Io8MtpY3m-zqILA",
        "title": "【みんなのリズム天国】アイドルのリズム感なめんなある！【ホロライブ/桃鈴ねね】",
        "description": "ねねはアイドルあるから、リズム感しかないあるよな！！！\n\n\nこの動画およびライブは、任天堂著作物の利用許諾を受けて配信しています。\n\n\n\n #任天堂 \n\nOP映像を撮ってくれたのは…\n加川 壱互（@plus15）先生です！\nかわいく撮ってくれてありがとうネ?\n\n\n使用BGM【 https://dova-s.jp/ 】さん\n\n??････････････････････････････････････････････････････････････････??\n\n??ねねとのお約束??\n\nみんなが協力してくれたら、配信がもっともっと楽しくなるネ！\nルールを守って楽しんでほしいアル！\n\n1.リスナーさん同士仲良くしてネ！スパムや荒らし行為は禁止アル。\n2.スパムや荒らしを見かけても、反応しない！\n　ブロック&通報で無視アルよ～！\n3.配信に関係ない話題を出したり個人的なお話をするのはやめてほしいアル。\n4.話題に出てなければ、他の配信者は配信の話はしないでネ。\n5.ねねやねねの配信の話は他の配信者のチャットでちゃダメアルよ。迷惑ある！\n6.待機所でお喋りは控えてほしいネ(トラブル防止のためアルよ！)\n\n上記のルールを守ってくれるなら、どの言語でコメントしてもOK！\n\nThanks for watching my stream! \nI can only understand simple English, but I appreciate your comments and support. \nTo help everyone enjoy the stream more, please follow these rules:\n\n1.Be nice to other viewers. Don’t spam or troll \n2.If you see spam or trolling, don’t respond. Just block, report, and ignore.\n3.Talk about the stream, but please don’t bring up unrelated topics or have personal conversations.\n4.Don’t bring up other streamers or streams unless I mention them.\n5.Similarly, don’t talk about me or my stream in other streamers’ chat.\n6.Please refrain from chatting before the stream starts to prevent any issues\nAs long as you follow the rules above, you can chat in any language\n\n??････････････････････････････････････････････････････････････････??\n\n??ホロライブ所属5期生の桃鈴ねね（Momosuzu Nene）??\n\nパッカーン！桃鈴ねねアル！\nアイドル目指して頑張るアル～！応援してネ！！！\n\nみんなが見てくれるお陰で、ねねは頑張れるアル！\n\n??ハッシュタグ系まとめ??\n【なんでも】#桃鈴ねね\n【配信タグ】#ねねいろらいぶ\n【ファンアート】#ねねアルバム\n【ファンネーム】#ねっ子\n【マーク】??\n\n??････････････････････････････････････････････････････････････････??\n??ちゃんねる登録よろしくお願いしますアル！??\nhttps://www.youtube.com/channel/UCAWSyEs_Io8MtpY3m-zqILA?view_as=subscriber\n\n??Twitterもよかったらフォローしてネ！??\nhttps://twitter.com/momosuzunene\n\n??････････････････････････････････････････････････････････････････??\n\n??お手紙や色紙はこちらまで??\n\n〒173-0003\n東京都板橋区加賀1丁目6番1号\nネットデポ新板橋\nカバー株式会社 ホロライブ プレゼント係分\n桃鈴ねね宛\n\n※お約束※：https://www.hololive.tv/contact\n\n??････････････････････････････････････････････････････････････････??\n\n??限定ボイス・グッズ??\nhttps://hololive.booth.pm/\n\n??ホロジュール（みんなのスケジュールまとめ）??\nhttps://schedule.hololive.tv/#hololive　\n\n??････････････････････････････････････････････････････････････････??\n\n【ホロライブプロダクション】\n\n??ホロライブプロダクション公式サイト??\nhttps://www.hololive.tv/\n\n??ホロライブプロダクション公式Twitter??\nhttps://twitter.com/hololivetv\n\n??ホロライブ公式チャンネル??\nhttps://www.youtube.com/channel/UCJFZiqLMntJufDCHc6bQixg",
        "thumbnails": {
          "default": {
            "url": "https://i.ytimg.com/vi/XWBiPn7JOHM/default.jpg",
            "width": 120,
            "height": 90
          },
          "medium": {
            "url": "https://i.ytimg.com/vi/XWBiPn7JOHM/mqdefault.jpg",
            "width": 320,
            "height": 180
          },
          "high": {
            "url": "https://i.ytimg.com/vi/XWBiPn7JOHM/hqdefault.jpg",
            "width": 480,
            "height": 360
          },
          "standard": {
            "url": "https://i.ytimg.com/vi/XWBiPn7JOHM/sddefault.jpg",
            "width": 640,
            "height": 480
          },
          "maxres": {
            "url": "https://i.ytimg.com/vi/XWBiPn7JOHM/maxresdefault.jpg",
            "width": 1280,
            "height": 720
          }
        },
        "channelTitle": "Nene Ch.桃鈴ねね",
        "tags": [
          "任天堂",
          "hololive",
          "ホロライブ",
          "Vtuber",
          "Hololive Production",
          "Mori Calliope",
          "Takanashi Kiara",
          "Gawr Gura",
          "Watson Amelia",
          "Ninomae Ina’nis",
          "雪花ラミィ",
          "尾丸ポルカ",
          "獅白ぼたん",
          "五期生"
        ],
        "categoryId": "20",
        "liveBroadcastContent": "none",
        "localized": {
          "title": "【みんなのリズム天国】アイドルのリズム感なめんなある！【ホロライブ/桃鈴ねね】",
          "description": "ねねはアイドルあるから、リズム感しかないあるよな！！！\n\n\nこの動画およびライブは、任天堂著作物の利用許諾を受けて配信しています。\n\n\n\n #任天堂 \n\nOP映像を撮ってくれたのは…\n加川 壱互（@plus15）先生です！\nかわいく撮ってくれてありがとうネ?\n\n\n使用BGM【 https://dova-s.jp/ 】さん\n\n??････････････････････････････････････････････････････････････････??\n\n??ねねとのお約束??\n\nみんなが協力してくれたら、配信がもっともっと楽しくなるネ！\nルールを守って楽しんでほしいアル！\n\n1.リスナーさん同士仲良くしてネ！スパムや荒らし行為は禁止アル。\n2.スパムや荒らしを見かけても、反応しない！\n　ブロック&通報で無視アルよ～！\n3.配信に関係ない話題を出したり個人的なお話をするのはやめてほしいアル。\n4.話題に出てなければ、他の配信者は配信の話はしないでネ。\n5.ねねやねねの配信の話は他の配信者のチャットでちゃダメアルよ。迷惑ある！\n6.待機所でお喋りは控えてほしいネ(トラブル防止のためアルよ！)\n\n上記のルールを守ってくれるなら、どの言語でコメントしてもOK！\n\nThanks for watching my stream! \nI can only understand simple English, but I appreciate your comments and support. \nTo help everyone enjoy the stream more, please follow these rules:\n\n1.Be nice to other viewers. Don’t spam or troll \n2.If you see spam or trolling, don’t respond. Just block, report, and ignore.\n3.Talk about the stream, but please don’t bring up unrelated topics or have personal conversations.\n4.Don’t bring up other streamers or streams unless I mention them.\n5.Similarly, don’t talk about me or my stream in other streamers’ chat.\n6.Please refrain from chatting before the stream starts to prevent any issues\nAs long as you follow the rules above, you can chat in any language\n\n??････････････････････････････････････････････････････････････････??\n\n??ホロライブ所属5期生の桃鈴ねね（Momosuzu Nene）??\n\nパッカーン！桃鈴ねねアル！\nアイドル目指して頑張るアル～！応援してネ！！！\n\nみんなが見てくれるお陰で、ねねは頑張れるアル！\n\n??ハッシュタグ系まとめ??\n【なんでも】#桃鈴ねね\n【配信タグ】#ねねいろらいぶ\n【ファンアート】#ねねアルバム\n【ファンネーム】#ねっ子\n【マーク】??\n\n??････････････････････････････････････････････････････････････････??\n??ちゃんねる登録よろしくお願いしますアル！??\nhttps://www.youtube.com/channel/UCAWSyEs_Io8MtpY3m-zqILA?view_as=subscriber\n\n??Twitterもよかったらフォローしてネ！??\nhttps://twitter.com/momosuzunene\n\n??････････････････････････････････････････････････････････････････??\n\n??お手紙や色紙はこちらまで??\n\n〒173-0003\n東京都板橋区加賀1丁目6番1号\nネットデポ新板橋\nカバー株式会社 ホロライブ プレゼント係分\n桃鈴ねね宛\n\n※お約束※：https://www.hololive.tv/contact\n\n??････････････････････････････････････････････････････････････････??\n\n??限定ボイス・グッズ??\nhttps://hololive.booth.pm/\n\n??ホロジュール（みんなのスケジュールまとめ）??\nhttps://schedule.hololive.tv/#hololive　\n\n??････････････････････････････････････････････････････････････････??\n\n【ホロライブプロダクション】\n\n??ホロライブプロダクション公式サイト??\nhttps://www.hololive.tv/\n\n??ホロライブプロダクション公式Twitter??\nhttps://twitter.com/hololivetv\n\n??ホロライブ公式チャンネル??\nhttps://www.youtube.com/channel/UCJFZiqLMntJufDCHc6bQixg"
        }
      },
      "statistics": {
        "viewCount": "97955",
        "likeCount": "7086",
        "dislikeCount": "32",
        "favoriteCount": "0",
        "commentCount": "37"
      },
      "liveStreamingDetails": {
        "actualStartTime": "2020-09-23T12:00:28.328000Z",
        "actualEndTime": "2020-09-23T13:19:02Z",
        "scheduledStartTime": "2020-09-23T12:00:00Z"
      }
    }
  ],
  "pageInfo": {
    "totalResults": 1,
    "resultsPerPage": 1
  }
}
```
の

```json
"statistics": {
  "viewCount": "97955",
  "likeCount": "7086",
  "dislikeCount": "32",
  "favoriteCount": "0",
  "commentCount": "37"
}
```
これ。
サムネイルのwidthとheightは数値なのにどうして。。。

結局以下の様に、取得時に数値化してMongoDBに登録することとした。

```javascript
doc.statistics.viewCount = Number(doc.statistics.viewCount)
doc.statistics.likeCount = Number(doc.statistics.likeCount)
doc.statistics.dislikeCount = Number(doc.statistics.dislikeCount)
doc.statistics.favoriteCount = Number(doc.statistics.favoriteCount)
doc.statistics.commentCount = Number(doc.statistics.commentCount)
```