由Id更新未找到文档

时间:2016-01-22 20:31:50

标签: node.js mongodb mongoose

我正在尝试使用Mongoose执行相对简单的更新:

var location =  locationService.getLocation(typedLat, typedLong, travelRadius);

DocumentModel.update({_id :  passedInId }, { location : location }, function(err, resp){
    next(err, resp);
});

在这种情况下,passInId是字符串: " 561ee6bbe4b0f25b4aead5c8"

在对象(我创建的测试数据)中,id为: " _id":ObjectId(" 561ee6bbe4b0f25b4aead5c8")

当我运行上面的命令时,匹配的文档为0.我认为这是因为passInId被视为字符串,但是当我将其键入ObjectId时:

var queryId = ObjectId(passedInId)

结果相同,文档不匹配。我错过了什么?这似乎应该是显而易见的......

2 个答案:

答案 0 :(得分:1)

Mongoose会将字符串正确解释为ObjectId。必须满足下列条件之一:

  • 该记录不在该集合中。在mongo shell中运行查询以进行检查。

  • Mongoose我正在寻找除包含测试数据的集合以外的集合。请记住,默认情况下,mongo将小写您注册模型的名称,并添加一个" s"它。

    • 最后,您的回答是对此的说法,也许您的模型只是没有更新任何新信息。

答案 1 :(得分:0)

这种行为是因为我还没有在mongoose中更新模型以包含location元素。没有错误,它只是没有匹配或做任何事情。