文字列としてmongoドキュメントIDを持っている場合、それを_idとしてクエリするにはどうすればよいですか?
正しく機能します.find({_id:'stringID'})
か、それとも最初にbsonオブジェクトに変換する必要がありますか?
文字列としてmongoドキュメントIDを持っている場合、それを_idとしてクエリするにはどうすればよいですか?
正しく機能します.find({_id:'stringID'})
か、それとも最初にbsonオブジェクトに変換する必要がありますか?
ObjectIdの24桁の16進数文字列があるということですか?
それがあなたの言いたいことだと仮定すると、ほとんどのドライバーは文字列を取得してそれをObjectIdに変換する方法を持っています。JavaScriptでは次のようになります。
.find({_id:new ObjectId("4f91bfcfaa7c5687a0c686d4")})
ノードネイティブドライバーにとってもう少し便利になるように更新されました( https://github.com/christkv/node-mongodb-nativeのドキュメントから):
// Get the objectID type
var ObjectID = require('mongodb').ObjectID;
var idString = '4e4e1638c85e808431000003';
collection.findOne({_id: new ObjectID(idString)}, console.log) // ok
collection.findOne({_id: idString}, console.log) // wrong! callback gets undefined
_id値が文字列の場合、他のフィールドと同じようにクエリを実行できます。(_idにカスタム値を設定する場合は、一意に保つ必要があります。そうしないと、重複キーエラーが発生します。)
MongoJSシェルの例を次に示します。
> db.test.insert({_id:"stringID1"})
> db.test.insert({_id:"stringID2"})
> db.test.insert({_id:"stringID3"})
> db.test.find({_id:"stringID1"})
{ "_id" : "stringID1" }
>
これはあなたが探していたものですか?私はあなたの質問を誤解しなかったと思います!
_id
Mongooseは、を使用すると文字列をObjectIdに自動キャストするため、文字列をfindByID
使用してクエリを実行できます_id
。
req.body
また、APIから入力される入力req.params
はすべて文字列型であるため、必要に応じてキャストを入力する必要があります...ただし、前述のように、マングースはそれを実行するため、入力_id
された文字列形式のままにしておくことができますなので。