MongoDB c#LINQ生成的查询
如何从LINQ查询中获取生成的查询? 我试过这个,但没用:MongoDB c#LINQ生成的查询,c#,mongodb,C#,Mongodb,如何从LINQ查询中获取生成的查询? 我试过这个,但没用: var query = ( from d in mcollection.AsQueryable<InstrumentationDocument>() where d.user == User && d.timestamp > DateTime.Today.AddDays(-days) orderby d.timestamp desc
var query = (
from d in mcollection.AsQueryable<InstrumentationDocument>()
where d.user == User && d.timestamp > DateTime.Today.AddDays(-days)
orderby d.timestamp descending
select new
{
d.timestamp,
d.machine,
d.processID,
feature = d.info["feature"].AsString,
extra = d.info.Contains("extra") ? d.info["extra"].ToJson() : ""
}
);
var mongoQuery = ((MongoQueryable<InstrumentationDocument>)query).GetMongoQuery();
var json = mongoQuery.ToJson();
您需要从代码中删除.ToArray()。当前,查询不是一个MongoQuery实例。它是一个匿名类型数组。因此,您对MongoQueryable的强制转换不应该工作。您需要从代码中删除.ToArray()。当前,查询不是一个MongoQuery实例。它是一个匿名类型数组。因此,您对MongoQueryable的转换不应该工作。在最新版本的MongoDB(v2.6)中更简单,只需在LINQ查询上调用
.ToJson()
,然后将查询字符串打印到控制台
string queryTextSentToMongoDb = query.ToJson();
在最新版本的MongoDB(v2.6)中更简单,只需在LINQ查询上调用
.ToJson()
,然后将查询字符串打印到控制台
string queryTextSentToMongoDb = query.ToJson();
您是在
mongoQuery.ToJson()
上设置断点来读取此表达式的值,还是将其写入日志/控制台?从您的代码示例来看,您似乎没有得到查询,因为没有可读取的变量,也没有在任何地方写入它。您可以发布什么是查询吗?除非我们掌握了所有详细信息,否则我们无法真正帮助您。您是在mongoQuery.ToJson()
上设置断点来读取此表达式的值,还是将其写入日志/控制台?从您的代码示例来看,您似乎没有得到查询,因为没有可读取的变量,也没有在任何地方写入它。您可以发布什么是查询吗?除非我们有所有的细节,否则我们真的帮不了你。谢谢。实际上,我的代码中没有ToArray。问题似乎实际上是在最后向annonymous类型new{}的投影。该类型不是InstrumentationDocument,因此无法将查询强制转换为MongoQueryAble谢谢。实际上,我的代码中没有ToArray。问题似乎实际上是在最后向annonymous类型new{}的投影。该类型不是InstrumentationDocument,因此无法将查询强制转换为MongoQueryableReally?因为我认为这会导致执行查询,而ToJson()是查询的实际结果,而不是发送到MongoDbReally的查询的定义?因为我认为这会导致执行查询,而ToJson()是查询的实际结果,而不是发送到MongoDb的查询的定义