在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,在这里只有后面那种才起作用。

posted @ 2015-06-16 17:38  眼神与背影  阅读(657)  评论(0编辑  收藏  举报