応答でObjectIdの代わりに文字列を取得するためにaggregate関数で使用できる演算子はありますか?
db.something.aggregate([ {$match: {'property': {$exists:true}} }, {$project: {stringId: '$_id.???'}}])
Mongodb4.0が導入しました $toString
集計演算子。したがって、ObjectIdを文字列に簡単に変換できるようになりました
db.collection.aggregate([
{
$project: {
_id: {
$toString: "$_id"
}
}
}
])
またはその逆 $toObjectId
集約
db.collection.aggregate([
{
$project: {
_id: {
$toObjectId: "$_id"
}
}
}
])
ObjectIdから文字列を取得するための集計関数には、直接演算子はありません。
バージョン2.6以降では、ObjectId.toString()
メソッドを使用してObjectIdを文字列に変換できます。まず、ObjectIDを照合して投影します。次に、ObjectID.toString()
を使用して、このオブジェクトIDを文字列に変換できます。
_db.something.aggregate([{"$match":{'property': {$exists:true}}},{"$project":{"_id":1}}])
_
そして、結果のオブジェクトを使用し、ObjectID.tostring()
を使用して応答として文字列を取得します
編集:オブジェクトIDのstr属性にアクセスするには次を使用します
ObjectId("507f191e810c19729de860ea").str
ソース: mongodb docs