无法在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")
})
然后我没有结果
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")})