Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 可以使用Mongo';s";对象ID“;作为其唯一标识符?如果是,我如何将其转换为字符串并按字符串查找?_Mongodb_Database - Fatal编程技术网

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