1

蒙戈聚合$過濾器,我有以下文件在ISO日期值

{ 
    "_id": "57b4c5f0291ebb13110b888e", 
    "first": "John", 
    "last": "Smith", 
    "email": "[email protected]", 
    "fulfillments": [ 
    { 
     "_id": "57b683e531a5a21679b78e6d", 
     "created_by_name": "John Smith", 
     "created_by_id": "57b4c5f0291ebb23110b888e", 
     "fulfilled_by_name": "John Smith", 
     "fulfilled_by_id": "57b4c5f0291ebb13110b888e", 
     "date": new Date("2016-08-23T13:58:15-0700") 
    } 
    ] 
} 

對於那些我有我只想返回尚未發生應驗列表中選擇一個蒙戈查詢。這意味着履行嵌入式文檔上的date屬性大於當前時間。

db.users.aggregate([ 
    { $match : { "_id" : "57b4c5f0291ebb13110b888e" } }, 
    { $project : { 
      "fulfillments" : { 
       $filter : { 
        "input" : "$fulfillments", 
        "as" : "item", 
        "cond" : ...SOMETHING HERE TO FILTER ON 'date' 
       } 
      } 
     } 
    }, 
    { $unwind : "$fulfillments" }, 
    { $project : { 
      "created_by_name" : "$fulfillments.created_by_name", 
      "created_by_id" : "$fulfillments.created_by_id", 
      "fulfilled_by_name" : "$fulfillments.fulfilled_by_name", 
      "fulfilled_by_id" : "$fulfillments.fulfilled_by_id", 
      "date" : "$fulfillments.date" 
     } 
    } 
]) 

我無法找出正確的方法是過濾只應驗了date尚未發生什麼。

回答

1

下應該給你想要的結果

... 
$project : { 
    "fulfillments" : { 
     $filter : { 
      "input" : "$fulfillments", 
      "as" : "item", 
      "cond" : { $gt: [ "$$item.date", new Date() ] } 
     } 
    } 
} 
...