无法使用Mongoose查找通过ObjectIdsearch的文档

Campaign.find {client_id:req.param('client_id')}, (error, campaigns) -> if error response = error: error.message else for campaign in campaigns query = campaign_id: campaign._id console.log query CampaignResponse.find query, (err, campaignResponsesCount) -> console.log campaignResponsesCount response = campaigns res.json response 

出于某种原因,这不会返回任何结果。 但是, CampaignResponse中的项目与特定的campaign._id 。 我很确定这是一个types和铸造的问题,但我不知道该怎么做。

任何帮助?

一些提示:

  • 尝试从命令行运行相同的查询从mongodb,看看你是否得到任何结果。
  • 在您的模式中,“campaign_id”是否定义为ObjectId? 如果是这样,请尝试使用ObjectIdtypes进行search。

例如:

 var ObjectId = require('mongoose').Types.ObjectId; var query = { campaign_id: new ObjectId(campaign._id) }; 

只是为了改善以前(正确)的答案,我用我的项目:

 String.prototype.toObjectId = function() { var ObjectId = (require('mongoose').Types.ObjectId); return new ObjectId(this.toString()); }; // Every String can be casted in ObjectId now console.log('545f489dea12346454ae793b'.toObjectId()); 

而不是使用ObjectId通过比较您的参数来查找,只需使用Campaign.findById {req.param('client_id'),function(err,docs)} ….

当使用objectId查找文档findById是所有的最有效的方法…