当前位置: 首页 > 知识库问答 >
问题:

MonogDB C#驱动程序LINQ查询按ID筛选时不工作

昝枫
2023-03-14

我目前正在尝试构建一个使用C#驱动程序与MongoDB接口的web API。

GET路由使用几个可选参数,这些参数根据请求中的参数动态生成LINQ查询。我遇到的问题是,当通过_id进行筛选时,它总是无法返回数据;这些尝试包括_id.toString()以及简单的_id==id比较。我尝试了几种比较id参数和documentid的方法,但都没有奏效。完全没有where子句,或者按文档中的任何其他字段以任何组合筛选所有返回数据。

这就是代码段当前的样子:

 var testId = new ObjectId(id);

 var result = collection.AsQueryable<Terrain>()
                 .Where(t => t._id.Equals(testId))
                 .Select(t => t);

  return Json(result);

这将返回一个空结果[]。我只能假设我误解了id的存储方式,即数据库和这里的查询方式。出于测试目的,我通过从Robo3T中复制_id值来获得参数id的值。

共有1个答案

禄星腾
2023-03-14
  • 请共享您的“地形”模型
  • 请注意,您正在启动一个空的testId对象,并且正在尝试将documents id与一个空对象匹配。您应该使用要查找的对象标识符来设置testId(例如:var testId=new ObjectId(“12345”))
 类似资料:
  • 谁能帮我用mongojack java驱动程序在mongodb子文档上为条件编写等效的查询 db.parentdocs.find({“subdoc._id”:ObjectId(“542d916a18ee9cfa2daeae15”)}) 这里subdoc是parentdoc文档中的一个子文档。我可以使用其他属性查询,但不能使用id BasicDBObject查询=新的BasicDBObject();

  • 通过使用MongoDB和Java驱动程序,我有一个用户集合,我想根据他们的ObjectId进行查询(总体情况:我从ObjectId推断出对象的创建时间戳)。 问题是,用ObjectId查询似乎不起作用:我总是没有结果。为了测试的目的,我在搜索查询中硬编码了数据库中现有用户的ObjectId,只是为了确保我能得到结果: {“_id”:ObjectId(“565ef85ee4b0a4db3c2fc96

  • 我试图在MongoDB\驱动程序\查询中使用选项: 如果$选项似乎可以: --------$options: 数组([排序]= $query没有给我好的选项: 限制和批量大小不等于20,为什么?请问怎么办? 提前感谢

  • 我使用python脚本,它传递给卡桑德拉批处理查询,如下所示: 这是一段时间的工作,但在启动脚本失败并打印后约2分钟内: 我将超时从 更改为: read_request_timeout_in_ms:15000 range_request_timeout_in_ms:20000 write_request_timeout_in_ms:20000 cas_contention_timeout_in_m

  • 问题内容: 我正在使用c#中的linq查询遇到一个问题,我的linq查询如下 我有一个 perfmon 类,它包含诸如(id,counter1,counter2 …)之类的属性,现在有20多个计数器,我已经开发了sql查询以根据参数中传递的计数器名称选择id和计数器,例如,如果我已经传递了counter1,它将仅选择id,counter1(重命名为counter) 如果我将在这里使用开关盒,那么它

  • 没有关于未关闭连接的报告。 按照@gus和@stephen C的建议,在