islands5 blog

日々起こったことを共有したり、思ったこと、勉強したことを書いていくブログ。普段はRailsやAWSを活用したWeb系の開発をやってます。

MongoDB Node.JS driverを使って躓いたメモ

微妙にハマってしまったのでメモ

Node.JSのMongoDBのクライアントでは有名どころでMongooseがあると思うのですが、 個人的な理由でMongoDB Node.JS Driverを使ってます
(一応本家が出してるしな〜的な軽い理由です)

これまで使ってて特に何も感じなかったのですが、
データはMongoDBの中に確実に入ってるのに、ドライバ経由でデータを取ろうとすると取れないという現象に遭遇しました

_id系を検索クエリに入れるときは、ObjectID.createFromHexStringで変換してから

mongodb.github.io

僕が引っかかったのはこちらの問題でした

これまではid以外のPKのフィールドでデータを取得し、
取得したデータからhoge._idで取得していたから気づかなかった...
すでにクエリから取得したデータは自動でIDがObjectIDに変換してくれてたっぽい
(パッと見文字列だけどよくよく見ると""が付いてなかった)

その値を他のコレクションに渡してデータを投げてたからこれまで支障がなかったという...

今回はIDからデータを取ろうと思って、id: "hexstringhogehoge"のように
idにstringを渡せば取れると思ったけど失敗した形

じゃあどうすればよかったかっていうと

const ObjectID = require('mongodb').ObjectID

ObjectID.createFromHexString('hexstringhogehogehoge')

みたいに文字列をObjectIDに変換してからクエリとして使おう

ではでは〜