这是最好的performance,而引用使用_id? 当使用_id检索时,我得到错误无效的对象ID

我应该如何在另一个集合中引用一个集合,一个唯一的用户名或默认的_id(对象id)或一个正常的id,当插入一个新的logging时会增加。 我读对象ids提高mongoose的性能,但我无法检索logging使用_ids作为其给出错误INVALID OBJECT ID。 当使用其他密钥(如用户名)检索时,我没有收到错误。 但是,由于_id增加了性能,我正在尝试使用它。

Model.find({_id : "idstring"}) 

我在定义模式时尝试了这两种方法,

1)_id没有定义,因为它会自动创build

2)我这样定义_id:_id:{type:Schema.ObjectId}

在这两种方式中,当检索logging时,出现错误“invalid object id”

谢谢

您需要从string中创build一个ObjectID

  var ObjectId = require('mongoose').Types.ObjectId; var myObjectId = ObjectId.fromString('myhexstring'); 

1)和2)都做同样的事情。 最好select1)让mongoose为你做。

我不知道必要的performance。 _id字段只能被你的mongodb索引,所以查询中的性能增益就是由此引起的。 如果查询速度慢,您可以随时索引任何其他字段。 它确实更容易使用_id。

INVALID OBJECT ID错误是由于传递的东西不能通过mongoose转换为ObjectId。 您可以传递一个hexstring或mongoose.Types.ObjectId的一个实例。 hexstring应该是24个字符的长度。 仔细检查这个值。

此外,显式将string转换为ObjectId已经完成,因此不需要手动执行。

Interesting Posts