MongoDB 3.6 如何将字符串转换为Object Id

MongoDB 3.6 how to convert string to Object Id

我正在使用 MongoDB 3.6。我正在尝试如下所示进行聚合 $lookup。

$lookup

{
  from: 'm_mtr',
  localField: 'mtdid',
  foreignField: '_id',
  as: 'mm'
}

这对我不起作用,因为 'mtdid' 是一个字符串,其值类似于“5bdbe5bcff10z046fcf8f04a”,而“_id”是一个对象 ID 字段,其值类似于“ObjectId('5bdbe5bcff10z046fcf8f04a')”。

有没有办法将字符串转换为ObjectId?我知道这在 Mongodb 4.0 中是可能的。不幸的是,除了 3.6,我别无选择。

在mongoose中,可以使用这个函数:

let id = new mongoose.Types.ObjectId('5bdbe5bcff10z046fcf8f04a');

这是一个 MongoDB open issue,在 4.0 中发布,您必须尝试切换到 4.0,因为它具有更多功能,当然不会因迁移而产生巨大影响。

https://jira.mongodb.org/browse/SERVER-22781