如何从LINQ查询中获取生成的查询? 我尝试了这个,但它没有用:
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();
其中InstrumentationDocument
是
class InstrumentationDocument
{
[BsonId]
public ObjectId _id { get; set; }
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime timestamp { get; set; }
public string user { get; set; }
public string machine { get; set; }
public int processID { get; set; }
public BsonDocument info { get; set; }
}
答案 0 :(得分:1)
您需要从代码中删除.ToArray()。目前,查询不是MongoQueryable实例。它是一个匿名类型的数组。因此,您对MongoQueryable的强制转换不应该正常工作。
答案 1 :(得分:0)
在最新版本的MongoDB(v2.6)中简单得多,只需在LINQ查询上调用.ToJson()
,然后将查询字符串打印到控制台。
string queryTextSentToMongoDb = query.ToJson();