Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

$toObjectId(集計)

項目一覧

  • 定義
  • 動作
$toObjectId

値を ObjectId() に変換します。値を ObjectId に変換できない場合は、$toObjectId でエラーが発生します。値が null または欠落している場合、$toObjectId は null を返します。

$toObjectId の構文は次のとおりです。

{
$toObjectId: <expression>
}

$toObjectId は任意の有効なを受け入れます。

$toObjectId は次の $convert 式の省略形です。

{ $convert: { input: <expression>, to: "objectId" } }

Tip

以下も参照してください。

下表には、ObjectId に変換できる入力型が一覧表示されています。

入力タイプ
動作

文字列

長さ 24 の 16 進文字列の ObjectId を返します。

長さ 24 の 16 進文字列ではない文字列値を変換することはできません。

次の表で、日付への変換例の一部を示します。

結果

{$toObjectId: "5ab9cbfa31c2ab715d42129e"}

ObjectId("5ab9cbfa31c2ab715d42129e")

{$toObjectId: "5ab9cbfa31c2ab715d42129"}

エラー

次のドキュメントを使用してコレクション orders を作成します。

db.orders.insertMany( [
{ _id: "5ab9cbe531c2ab715d42129a", item: "apple", qty: 10 },
{ _id: ObjectId("5ab9d0b831c2ab715d4212a8"), item: "pie", qty: 5 },
{ _id: ObjectId("5ab9d2d331c2ab715d4212b3"), item: "ice cream", qty: 20 },
{ _id: "5ab9e16431c2ab715d4212b4", item: "almonds", qty: 50 },
] )

orders コレクションに対する次の集計操作は、値で並べ替える前に _id を ObjectId に変換します。

// Define stage to add convertedId field with converted _id value
idConversionStage = {
$addFields: {
convertedId: { $toObjectId: "$_id" }
}
};
// Define stage to sort documents by the converted qty values
sortStage = {
$sort: { "convertedId": -1 }
};
db.orders.aggregate( [
idConversionStage,
sortStage
] )

この操作により、次のドキュメントが返されます。

{
_id: '5ab9e16431c2ab715d4212b4',
item: 'almonds',
qty: 50,
convertedId: ObjectId("5ab9e16431c2ab715d4212b4")
},
{
_id: ObjectId("5ab9d2d331c2ab715d4212b3"),
item: 'ice cream',
qty: 20,
convertedId: ObjectId("5ab9d2d331c2ab715d4212b3")
},
{
_id: ObjectId("5ab9d0b831c2ab715d4212a8"),
item: 'pie',
qty: 5,
convertedId: ObjectId("5ab9d0b831c2ab715d4212a8")
},
{
_id: '5ab9cbe531c2ab715d42129a',
item: 'apple',
qty: 10,
convertedId: ObjectId("5ab9cbe531c2ab715d42129a")
}

注意

変換操作でエラーが発生した場合、集計操作は停止し、エラーがスローされます。この動作をオーバーライドするには、代わりに $convert を使用します。

戻る

$toLong

項目一覧