在mongodb中找不到id

时间:2016-02-05 13:09:17

标签: c# mongodb

我在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")
})

然后我没有结果

1 个答案:

答案 0 :(得分:0)

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")})