微妙にハマってしまったのでメモ
Node.JSのMongoDBのクライアントでは有名どころでMongooseがあると思うのですが、
個人的な理由でMongoDB Node.JS Driverを使ってます
(一応本家が出してるしな〜的な軽い理由です)
これまで使ってて特に何も感じなかったのですが、
データはMongoDBの中に確実に入ってるのに、ドライバ経由でデータを取ろうとすると取れないという現象に遭遇しました
_id系を検索クエリに入れるときは、ObjectID.createFromHexStringで変換してから
僕が引っかかったのはこちらの問題でした
これまではid以外のPKのフィールドでデータを取得し、
取得したデータからhoge._idで取得していたから気づかなかった...
すでにクエリから取得したデータは自動でIDがObjectIDに変換してくれてたっぽい
(パッと見文字列だけどよくよく見ると""が付いてなかった)
その値を他のコレクションに渡してデータを投げてたからこれまで支障がなかったという...
今回はIDからデータを取ろうと思って、id: "hexstringhogehoge"のように
idにstringを渡せば取れると思ったけど失敗した形
じゃあどうすればよかったかっていうと
const ObjectID = require('mongodb').ObjectID ObjectID.createFromHexString('hexstringhogehogehoge')
みたいに文字列をObjectIDに変換してからクエリとして使おう
ではでは〜