2017-05-06 6 views
-1

無効な日付使っモーメント

db.SBM_USER_DETAIL.aggregate([ 

    { 
     $project: { 
      join_date: moment('$JOIN_DATE').locale('es').tz("Asia/Kolkata").format() 
     } 
    } 
]) 

が、結果は、

無効な日付は

それはモンゴの値を格納しdbは "JOIN_DATE"です。ISODate( "2017-01-30T18:30:00.000Z") "

なぜそのcomin gは「無効な日付」ですか?

私の間違いを知りません、私を助けてください。

+0

はいジョー、私は** **「$ JOIN_DATE」周りの単一引用符を使用して – Jeyabalan

答えて

1

集約パイプラインは任意のjavascriptを直接処理することはできません。あなたの例では、文書フィールドが置換される前にシェルによってmoment関数が呼び出されているため、値は無効です。

.mapを使用し、各ドキュメントにjavascript関数にフィールドを適用するには、そのよう:

db.SBM_USER_DETAIL.aggregate([ 

    { 
     $project: { 
      join_date: '$JOIN_DATE' 
     } 
    } 
]).map(
    function(d) { 
     d.join_date = moment(d.join_date).locale('es').tz("Asia/Kolkata").format(); 
     return d 
}) 
+0

恐ろしいですよ。私が期待していたことをうまく働いているありがとうたくさん:) – Jeyabalan

+0

私はどのように集計クエリ内の戻り値(結合日)を使用できますか? – Jeyabalan

+0

それは本当にあなたがやろうとしていることに本当に依存します。コメントには実際にそのことを説明するのに十分なスペースがありませんが、詳細をつけて新しい質問を開くと、私は一目瞭然です。 – Joe