【问题标题】:Convert string to ObjectID in MongoDB在 MongoDB 中将字符串转换为 ObjectID
【发布时间】:2011-12-11 03:51:18
【问题描述】:

我正在使用 Codeigniter 和 MongoDB 开发一个 API。 在数据库的某些部分,我以 ObjectID 格式保存了图像的 ID 而不是一个字符串。现在我得到了一个字符串格式的 ID,我需要使用它来查询数据库。

如何将字符串“转换”为 ObjectID 以便进行查询?

从这里:

34234234234234234234

到这里:

ObjectID("34234234234234234234")

更新

我找到了解决方案。这样做new MongoId('34234234234234234234');

【问题讨论】:

  • MongoId 不是 Mongo REPL 中的有效类型

标签: codeigniter mongodb


【解决方案1】:

使用猫鼬:

var mongoose = require('mongoose');
var objectId = mongoose.Types.ObjectId('569ed8269353e9f4c51617aa');

使用本机驱动程序 (https://stackoverflow.com/a/21076589/3377073)

var ObjectId = require('mongodb').ObjectId;
doc._id = new ObjectId(doc._id); // wrap in ObjectID

【讨论】:

  • ObjectID 在使用原生驱动时应该是ObjectId
【解决方案2】:

您只需要从您的 mongo 中获取 ObjectId 函数。

ObjectId = require('mongodb').ObjectID;

那么你可以这样使用它:

ObjectId("34234234234234234234")

【讨论】:

  • 这个答案真的很有帮助!
  • 我得到:“错误:ReferenceError:未定义要求”。这是什么意思?
【解决方案3】:

如果你使用 Meteor

var id = new Mongo.ObjectID("34234234234234234234");

【讨论】:

    【解决方案4】:

    您现在可以在 mongodb 4.0 及更高版本上将字符串转换为 objectId。有一个新功能可以将字符串 id 转换为 objectId

    在这里你可以看到文档$toObjectId

    【讨论】:

      【解决方案5】:

      或更好的使用

      var mongodb = require(‘mongodb’); //this might have been defined at the beginning of your code.
      //now use it
      query = {_id:mongodb.ObjectId('569ed8269353e9f4c51617aa')};
      

      其余的都是一样的。

      【讨论】:

        【解决方案6】:

        mongo DB 版本 v3.6.3

        如何将字符串输入保存到 MongoDB ObjectId 关于快速控制器代码

        const mongoose = require('mongoose');
        var ObjectId = require('mongodb').ObjectId;
        user: mongoose.Types.ObjectId(req.body.user)
        console.log(user, typeof(user))

        【讨论】:

          猜你喜欢
          • 2018-11-09
          • 2017-03-11
          • 1970-01-01
          • 2022-01-02
          • 1970-01-01
          • 2014-04-20
          • 1970-01-01
          • 1970-01-01
          • 2012-05-04
          相关资源
          最近更新 更多