new Date() in aggregate $project

后端 未结 3 1086
迷失自我
迷失自我 2020-12-28 17:34

For one of my collections, which must remain unix timestamp instead of isodate, I usually convert the timestamp with new Date(unix_timestamp).

Now I need the ne

3条回答
  •  没有蜡笔的小新
    2020-12-28 18:01

    For additional calculated fields in projection you need to use $add operator, like this: (console example)

    db.so.aggregate([{$project: {date: {$add: Date() }}}])
    

    but it's wrong and we get a error message:

    exception: $add does not support strings (or dates)
    

    But I found a simple hack =)

    db.so.aggregate([{$project: {date: {$substr: [Date(), 0, -1] }}}])
    

    In this case we'll have expected result with dates Also, in PHP output you can see error like this:

    exception: disallowed field type Date in object expression (at 'date')
    

    And now, solution(php 5.4 syntax):

    $so->aggregate([
        ['$project' => ["date" => ['$substr' => [new MongoDate(), 0, -1]] ] ]
    ]);
    

提交回复
热议问题