Mongodb 可以使用Mongo';s";对象ID“;作为其唯一标识符?如果是,我如何将其转换为字符串并按字符串查找?
例如Mongodb 可以使用Mongo';s";对象ID“;作为其唯一标识符?如果是,我如何将其转换为字符串并按字符串查找?,mongodb,database,Mongodb,Database,例如 user/view/?id=324gijsdfi3h25o1 我可以str()it…但是 我如何通过字符串查找它 编辑:我希望Mongo中的每个文档都有一个唯一的标识符(通常是一个字符串),我可以在上面查找。我希望对象ID可以是这个(因为它有很多字母,而且是唯一的),我希望它能与HTTP GET一起工作。view?uid=e93jfsb0e3jflskdjf您可以使用字符串构造一个新的ObjectId。此示例使用MongoDB控制台: db.users.find({ _id: Objec
user/view/?id=324gijsdfi3h25o1
我可以str()
it…但是
我如何通过字符串查找它
编辑:我希望Mongo中的每个文档都有一个唯一的标识符(通常是一个字符串),我可以在上面查找。我希望对象ID可以是这个(因为它有很多字母,而且是唯一的),我希望它能与HTTP GET一起工作。view?uid=e93jfsb0e3jflskdjf您可以使用字符串构造一个新的
ObjectId
。此示例使用MongoDB控制台:
db.users.find({ _id: ObjectId("4cdfb11e1f3c000000007822") })
我无法从您的问题中判断您使用的是哪种语言驱动程序(如果有的话),但大多数驱动程序也支持此功能
不应将数据库中的ObjectId
转换为字符串,然后将其与另一个字符串进行比较。如果您这样做,MongoDB将无法使用\u id
索引,它将不得不扫描所有文档,从而导致查询性能差。请回答您的问题:
可以使用Mongo的“对象ID”作为其唯一标识符吗
是的,就是为了这个目的。在分片环境中,创建唯一的ID可能是一件痛苦的事情,所以MongoDB为您做到了这一点
如果是,我如何将其转换为字符串并按字符串查找
不要。这不是一根绳子。MongoDB实际上允许您覆盖默认ID。因此,如果您开始搜索#“4CDFB11E1F3C0000000007822”
,Mongo认为您在寻找字符串。相反,如果您查找ObjectId(“4CDFB11E1F3000000007822”)
,Mongo将查找ObjectId(或MongoID)
在您的问题中,看起来您正试图将其作为字符串传递。如何将其转换为“objectid”将取决于您的驱动程序。PHP有一个新的功能。其他驱动程序也有类似的功能。ObjectId是生成唯一id的一种简便方法,但您可以自己自由操作。以你为例,
var o = {_id: Math.random().toString(36).substring(10)};
collection.insert(o, handleCollision);
工作正常,不过你必须自己处理碰撞。然后,您可以根据需要使用直接字符串比较。您能否通过提供文档没有回答的内容来澄清问题:如果我不使用ObjectID作为唯一标识符,我还应该如何将其与其他字符串进行比较?@TIMEX:您的意思是什么?您能否更新您的问题以准确地解释您想要实现的目标?我希望Mongo中的每个文档都有一个唯一的标识符(通常是一个字符串),以便我可以查找。我希望对象ID可以是这个(因为它有很多字母,而且它是唯一的。)我正在构建一个博客,我希望它能与HTTP GET一起工作。视图?uid=e93jfsb0e3jflskdjf