2016-02-05 118 views
0

我在MongoDB中遇到问题。在mongodb中找不到id

我有文件与该结构

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

有时我会不结果

+0

MongoDB中没有“LUUID”数据类型。 C#驱动程序用什么BSON类型来表示这种类型?您可以通过使用db.getCollection('Object')。findOne()'获取次最佳文档来检查mongodb shell。我怀疑它要么转换为C#LUUID类的字符串或对象表示形式。 – Philipp

回答

0

蒙戈对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==") 
}) 

或者,你可以启动一个蒙戈外壳时从GitHub加载助手脚本:

mongo --shell uuidhelpers.js 

当这个被载入您可以查询您的GUID是这样的:

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