当它是一个GUID时,遇到一些问题从Mongo在Id上查询。我有一个非常愚蠢的测试课,它只是公开的Guid Id {get; set}。我创建一个集合,并插入这个测试类。在shell我认为这是C#驱动程序处理GUID
{ "_id" : BinData(3,"9q+FwoU/RE2+Iq3w7hK1JA==") }
然后我尝试做
var query = Query.EQ("Id", Id);
如果我看在调试器,它显示为
{ "Id" : CSUUID("c285aff6-3f85-4d44-be22-adf0ee12b524") }
但是,它不返回任何东西..我在这里错过了明显的东西?另外,注意,shell不知道什么是CSUUID ..有没有办法启用它? CentOS服务器如果很重要...
完美感 - 谢谢! – XeroxDucati 2011-12-19 21:26:55
要停止添加CSUUID的驱动程序,您可以将值作为字符串而不是GUID传递。 – Andrew 2014-01-08 02:43:03
@Andrew:不,你不能。这将查找数据库中的字符串,并且'CSUUID(someString)!= someString'。 'ObjectId'也是如此。而且,这些字符串需要比它们的字节表示更多的存储空间。更重要的是,该驱动程序不'添加'CSUUID'。 'CSUUID'是一个js帮助程序方法,它使您能够轻松创建C#从JavaScript中的字符串使用的相同二进制表示,因此驱动程序的ToString()方法具有覆盖,因此调试器中显示的内容可用于从命令行查询数据库。 – mnemosyn 2014-01-08 09:46:57