Topic.aggregate( //{$match:{_id:"5576b59e192868d01f75486c"}}, //not work //{$match:{title:"test"}}, //{$match:{_id:new mongoose.schema.Types.ObjectId(id)}}, //not work {$match:{_id:new mongoose.Types.ObjectId(id)}}, ... function(err,res){ ... });
在使用mongoose的聚合時必定要注意,在id列上使用$match會有個小問題,參考上面的代碼,{$match:{_id:"5576b59e192868d01f75486c"}}
這句話不起做用,但數據庫中明明有對應的文檔,改成其餘列(好比:title)就沒問題,但有時就須要使用id列,這時須要這樣寫{$match:{_id:new mongoose.Types.ObjectId(id)}}
,經查閱,mongoose中有兩個地方定義了ObjectId,mongoose.schema.Types.ObjectId
和mongoose.Types.ObjectId
,在這裏只有後面那種才起做用。數據庫