我正在尝试使用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)
结果相同,文档不匹配。我错过了什么?这似乎应该是显而易见的......
答案 0 :(得分:1)
Mongoose会将字符串正确解释为ObjectId。必须满足下列条件之一:
该记录不在该集合中。在mongo shell中运行查询以进行检查。
Mongoose我正在寻找除包含测试数据的集合以外的集合。请记住,默认情况下,mongo将小写您注册模型的名称,并添加一个" s"它。
答案 1 :(得分:0)
这种行为是因为我还没有在mongoose中更新模型以包含location元素。没有错误,它只是没有匹配或做任何事情。