web-dev-qa-db-ja.com

ObjectIdをmongodb集計の文字列値に$ projectする方法は?

応答でObjectIdの代わりに文字列を取得するためにaggregate関数で使用できる演算子はありますか?

db.something.aggregate([ {$match: {'property': {$exists:true}} }, {$project: {stringId: '$_id.???'}}])
24
matus

Mongodb4.0が導入しました $toString 集計演算子。したがって、ObjectIdを文字列に簡単に変換できるようになりました

db.collection.aggregate([
  {
    $project: {
      _id: {
        $toString: "$_id"
      }
    }
  }
])

またはその逆 $toObjectId 集約

db.collection.aggregate([
  {
    $project: {
      _id: {
        $toObjectId: "$_id"
      }
    }
  }
])
21
Ashh

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

8
Tamil Arasi