Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB C#驱动程序:使用Linq获取Guid不会返回任何结果_C#_Linq_Mongodb_Guid - Fatal编程技术网

MongoDB C#驱动程序:使用Linq获取Guid不会返回任何结果

MongoDB C#驱动程序:使用Linq获取Guid不会返回任何结果,c#,linq,mongodb,guid,C#,Linq,Mongodb,Guid,下面是我用来查询数据库的代码。变量“filter”是一个linq表达式。似乎我可以使用这段代码使用ObjectId或文档中的任何其他值来获取数据。但当我存储Guid并尝试检索它时,不会返回。在这里我有没有做错什么,或者MongoDB本身在GUI方面有没有限制 _dbSet = mongoDatabase.GetCollection(collectionName); var query = _dbSet.AsQueryable<TEntity>();

下面是我用来查询数据库的代码。变量“filter”是一个linq表达式。似乎我可以使用这段代码使用ObjectId或文档中的任何其他值来获取数据。但当我存储Guid并尝试检索它时,不会返回。在这里我有没有做错什么,或者MongoDB本身在GUI方面有没有限制

        _dbSet = mongoDatabase.GetCollection(collectionName);
        var query = _dbSet.AsQueryable<TEntity>();

        if (filter != null)
        {
            query = query.Where(filter);
        }

        return query.ToList();

用于检索此对象的实体只有一个名为Id的属性,据我所知,该属性转换为Mongo文档中的_Id字段。因此,我也尝试检索Id属性。仍然没有结果。

这是我的错误。在我使用的查看器中,返回的Guid的格式似乎不正确。Robomongo喜欢默认使用他们称之为LegacyUUID的东西,但是这与.Net Guid的格式不同。我需要更改查看器中的选项,使其显示正确的Guid供我查找

扩展@jjkim的答案,因为我无法在评论中发布图片:

您需要更改Studio 3T for MongoDB中“编辑>首选项”下的首选项


什么是
过滤器
,同一个过滤器是否提供了所需的结果,比如在MongoDB控制台中?过滤器是表达式我看到Mongo将Guid存储为某种二进制数据。我并不真正关心在shell中仅使用c#驱动程序进行查询。在shell中运行它的问题更倾向于“您的查询是否实际提供了您认为它应该提供的结果”,然后再尝试找出为什么它不能在c#中提供结果。这可能是测试,也可能不是测试,这取决于您的过滤器是否映射到标准查询。啊,好的。好的,从我所知道的,shell中的查询看起来与代码中的查询不同。特别是因为我使用Linq进行查询。更不用说,在将Guid传递到shell中的find之前,我需要对试图查找的Guid进行某种转换。我特别尝试使用Linq并执行以下操作以获取文档
entity=>entity.Id==Guid
好吧,我还没有做过任何C#Mongo的事情,但是我知道Node.js包装器会将Id作为ObjectID返回(至少在我使用它时是这样),所以搜索Id需要我包装一个Guid字符串,本质上是
新ObjectID(myGuidString)
,以便对其执行查询。同样,这可能不适用于C#,但这是一个想法。你改变了什么?@SunnySharma我回答得有点晚。我道歉。我已经很久没有使用机器人了。据我回忆,这只是UI中UUID格式的改变。从下面的答案来看,你似乎找到了。希望这能帮助其他陷入不同UUID格式相同陷阱的人。谢谢!这很有帮助
{
    "_id" : LUUID("e5bdda3b-ae6a-d942-bd43-c8c7a6803096")
}