可以使用Mongo的"对象ID"作为其唯一标识符吗?如果是这样,我如何将其转换为字符串并按字符串查找?

TIM*_*MEX 16 database mongodb

例如...

user/view/?id=324gijsdfi3h25o1
Run Code Online (Sandbox Code Playgroud)

我可以str()......但......

我怎么能用find弦?

编辑:我希望Mongo中的每个文档都有一个我可以查看的唯一标识符(通常是一个字符串).我希望对象ID可以是这样的(因为它有很多字母而且它是唯一的.)而且我希望它能与HTTP GET一起使用.查看?UID = e93jfsb0e3jflskdjf

Nie*_*est 19

您可以ObjectId使用字符串构造一个新的.此示例使用MongoDB控制台:

db.users.find({ _id: ObjectId("4cdfb11e1f3c000000007822") })
Run Code Online (Sandbox Code Playgroud)

我无法从您的问题中判断出您使用的语言驱动程序(如果有的话),但大多数驱动程序也支持此功能.

您不应该将ObjectId数据库中的数据转换为字符串,然后将其与另一个字符串进行比较.如果你这样做,MongoDB不能使用_id索引,它必须扫描所有文档,导致查询性能不佳.

  • 如果我不使用ObjectID作为唯一标识符,我还应该如何将其与其他字符串进行比较? (3认同)
  • 我希望Mongo中的每个文档都有一个我可以查看的唯一标识符(通常是一个字符串).我希望对象ID可以是这样的(因为它有很多字母而且它是独一无二的.)我正在建立一个博客,我希望它能与HTTP GET一起使用.查看?UID = e93jfsb0e3jflskdjf (3认同)

Gat*_* VP 14

对你的问题:

可以使用Mongo的"对象ID"作为其唯一标识符吗?

是的,它的目的是为了这个目的.在分片环境中制作唯一ID可能很痛苦,因此MongoDB会为您完成此操作.

如果是这样,我如何将其转换为字符串并按字符串查找?

别.这不是一个字符串.MongoDB实际上允许您覆盖默认ID.因此,如果你开始搜索#"4cdfb11e1f3c000000007822",Mongo认为你正在寻找一个字符串.如果您要查找ObjectId("4cdfb11e1f3c000000007822"),Mongo将查找ObjectId(或MongoID).

在您的问题中,看起来您正试图将其作为字符串传递.如何将其转换为"objectid"将取决于您的驱动程序.PHP有一个MongoId.其他驱动程序具有类似的功能.