在mongoose中使用$match對id失效的解決方法

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.ObjectIdmongoose.Types.ObjectId,在這裏只有後面那種才起做用。數據庫

相關文章
相關標籤/搜索