$toString(集計)
定義
動作
次の表に、文字列に変換できる入力タイプを示します。
入力タイプ | 動作 |
---|---|
ブール値 | ブール値を文字列として返します。 |
Double | double 値を string として返します。 |
小数点 | 10 進数値を文字列として返します。 |
整数 | 整数値を文字列として返します。 |
Long | long 値を文字列として返します。 |
ObjectId | ObjectId 値を文字列として返します。 |
文字列 | 何も起こりません。文字列値を返します。 |
日付 | 日付を文字列値として返します。 |
次の表に、文字列値への変換の例をいくつか示します。
例 | 結果 |
---|---|
{$toString: true} | "true" |
{$toString: false} | "false" |
{$toString: 2.5} | "2.5" |
{$toString: NumberInt(2)} | "2" |
{$toString: NumberLong(1000)} | "1000" |
{$toString: ObjectId("5ab9c3da31c2ab715d421285")} | "5ab9c3da31c2ab715d421285" |
{$toString: ISODate("2018-03-27T16:58:51.538Z")} | "2018-03-27T16:58:51.538Z" |
例
次のドキュメントを使用してコレクション orders
を作成します。
db.orders.insertMany( [ { _id: 1, item: "apple", qty: 5, zipcode: 93445 }, { _id: 2, item: "almonds", qty: 2, zipcode: "12345-0030" }, { _id: 3, item: "peaches", qty: 5, zipcode: 12345 }, ] )
orders
コレクションに対する次の集計操作では、文字列値で並べ替える前に zipcode
を文字列に変換します。
// Define stage to add convertedZipCode field with the converted zipcode value zipConversionStage = { $addFields: { convertedZipCode: { $toString: "$zipcode" } } }; // Define stage to sort documents by the converted zipcode sortStage = { $sort: { "convertedZipCode": 1 } }; db.orders.aggregate( [ zipConversionStage, sortStage ] )
この操作により、次のドキュメントが返されます。
{ _id: 3, item: 'peaches', qty: 5, zipcode: 12345, convertedZipCode: '12345' }, { _id: 2, item: 'almonds', qty: 2, zipcode: '12345-0030', convertedZipCode: '12345-0030' }, { _id: 1, item: 'apple', qty: 5, zipcode: 93445, convertedZipCode: '93445' }
注意
変換操作でエラーが発生した場合、集計操作は停止し、エラーがスローされます。この動作をオーバーライドするには、代わりに $convert
を使用します。