gpt4 book ai didi

c# - 在 MongoDB C# 驱动程序中获取生成的脚本

转载 作者:IT老高 更新时间:2023-10-28 13:31:30 25 4
gpt4 key购买 nike

我正在使用 MongoDB.Driver 2.0.0。有什么方法可以查看从 linq 到 MongoDB 的生成脚本?

例如我的查询是这样的:

IFindFluent<ProductMapping, ProductMapping> findFluent = Collection.Find(
x => hashValues.Contains(x.UrlHash) && x.ProductTopic == topicId);

在 MongoDB shell 中如何表示这个(或更复杂的查询)?

最佳答案

编辑:从驱动程序的 2.0.1 版本开始,从 IMongoCollection.Find 返回的 FindFluent 对象具有适当的 ToString,其中包括过滤器,还有投影、排序等(如果相关)。

所以,对于这个:

var findFluent = collection.
Find(x => hashValues.Contains(x.UrlHash) && x.ProductTopic == topicId,
new FindOptions {MaxTime = TimeSpan.FromSeconds(1)}).
Project(x => x.UrlHash).
Sort(Builders<ProductMapping>.Sort.Descending(x => x.ProductTopic)).
Skip(6).
Limit(7);

Console.WriteLine(findFluent);

输出将是:

find({ "UrlHash" : { "$in" : [4, 5, 6, 7, 8] }, "ProductTopic" : 200 }, { "UrlHash" : 1, "_id" : 0 }).
sort({ "ProductTopic" : -1 }).
skip(6).
limit(7).
maxTime(1000)

好吧,您已经知道您正在执行查找,所以我假设您想知道查询的样子。

您可以使用 IFindFluent.Filter 直接从您的代码中轻松地做到这一点:

BsonDocument filterDocument = findFluent.Filter.Render(
collection.DocumentSerializer,
collection.Settings.SerializerRegistry);

Console.WriteLine(filterDocument);

您的情况下的输出(当然取决于 hashValuestopicId):

{ "UrlHash" : { "$in" : [4, 5, 6, 7, 8, 9] }, "ProductTopic" : 200 }

关于c# - 在 MongoDB C# 驱动程序中获取生成的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30306193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com