无法在MongoDB中通过ID找到

本文关键字:ID 找到 MongoDB | 更新日期: 2023-09-27 18:33:32

我在MongoDB中查询时遇到问题。

我有具有该结构的文档

{
    "_id" : LUUID("5eca9329-6525-e544-bb27-f1797def8110"),
    "StartTimestamp" : NumberLong(193),
    "EndTimestamp" : NumberLong(193),
}

_id是从 GUID (C#) 生成的。问题是当我想在 mongo 控制台中进行本机查询时。

我的查询

db.getCollection('Object').findOne(
{
    "_id": LUUID("5eca9329-6525-e544-bb27-f1797def8110")
})

然后我没有结果

无法在MongoDB中通过ID找到

Mongo目前对GUID的支持是有限的。C# 驱动程序当前以二进制表示形式编写 GUID,其中 GUID 的前三个字段是小端序,而其他一些驱动程序使用大端序表示形式。因此,根据存储 GUID 的驱动程序,字符串表示形式会有所不同,请参阅此 JIRA 票证以获取更多详细信息,

简而言之,由于 GUID 是由 C# 创建的,因此它将存储为类型 3 的 BinData 对象,如下所示。

BinData(3,"KZPKXiVlROW7J/F5fe+BEA==")

这意味着为了检索您的记录,您必须运行以下查询:

db.getCollection('Object').findOne(
{
   "_id": BinData(3,"KZPKXiVlROW7J/F5fe+BEA==")
})

或者,您可以在启动 Mongo shell 时从 GitHub 加载帮助程序脚本:

mongo --shell uuidhelpers.js

加载此内容后,可以按如下所示查询 GUID:

db.data.find({_id:CSUUID("5eca9329-6525-e544-bb27-f1797def8110")})