【问题标题】:MongoDB 3.6 how to convert string to Object IdMongoDB 3.6 如何将字符串转换为对象 ID
【发布时间】:2019-05-25 23:48:14
【问题描述】:

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

$查找

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

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

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

【问题讨论】:

标签: mongodb lookup objectid


【解决方案1】:

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

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

【讨论】:

  • 正如我所提到的,没有更改为 4.0 的选项。客户端要求是 3.6
【解决方案2】:

在猫鼬中,你可以使用这个功能:

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

【讨论】:

  • 谢谢! ObjectId 可以带字符串变量作为参数吗?
  • 没有。您需要先将字符串转换为 ObjectId。 // 获取objectID类型 var ObjectID = require('mongodb').ObjectID; var idString = '5bdbe5bcff10z046fcf8f04a'; collection.findOne({_id: new ObjectID(idString)}, console.log) // 好的 collection.findOne({_id: idString}, console.log) // 错了!回调未定义
猜你喜欢
  • 1970-01-01
  • 2014-04-20
  • 1970-01-01
  • 1970-01-01
  • 2021-02-03
  • 2018-07-19
  • 2019-07-07
  • 1970-01-01
相关资源
最近更新 更多