我正在尝试使用
将字符串转换为ObjectIdvar body={};
var objId="57b40595866fdab90268321e";
body.id=mongoose.Types.ObjectId(objId);
myModel.collection.insert(body,function(err,data){
//causing err;
});
当使用mongoose 4.4.16时,上面的代码工作正常,但如果我将我的mongoose更新到最新版本(4.6.0),则会出现问题。
ERR
object [
{
"_bsontype":"ObjectID",
"id:{"0":87,"1":180,"2":5,"3":235,"4":134,"5":111,"6":218,"7":185,"8":2,"9":104,"10":50,"11":111}
}
]
is not a valid ObjectId
答案 0 :(得分:2)
插入新文件的正确方法是 -
var newDocument = new myModel({
_id: mongoose.Types.ObjectId("57b40595866fdab90268321e")
});
newDocument.save();
在你的情况下 - 它停止工作,因为mongoose和mongo本机驱动程序的版本之间存在差异。
尽管如此,您可以通过上面的示例执行此操作,或者,如果您仍想使用insert
,则可以使用myModel.insertMany
(通过传递对象而不是数组)
看这里 http://mongoosejs.com/docs/api.html#model_Model.insertMany
答案 1 :(得分:0)
我没有时间来刺激它,但如果我没记错的话,id
是一个简单的字符串而_id
是ObjectId,即
body.id="57b40595866fdab90268321e"
或
body._id=mongoose.Types.ObjectId("57b40595866fdab90268321e");
那就是说,它必须那个特定的id吗?如果没有,您可以使用new myModel()
并自动创建ID。