在 C# 中动态查询 Mongo 集合
Posted
技术标签:
【中文标题】在 C# 中动态查询 Mongo 集合【英文标题】:Dynamically Query a Mongo Collection in c# 【发布时间】:2021-12-30 18:03:36 【问题描述】:我是 C# mongo 的新手,之前在 Node 和 Mongo 工作过。 我有一个名为 tasks 的集合。下面是一个示例记录。
"_id" : ObjectId("6193bfba23855443a127466a"),
"taskIdentifier" : LUUID("00000000-0000-0000-0000-000000000000"),
"title" : "PR Liquidators",
"company" : "iuytreugdfh",
"purpose" : "test purpose",
"column" : "Search",
"assignTo" : "Shiva",
"assignToId" : ObjectId("61933b47a79ac615648a7855"),
"assignToImage" : null,
"notes" : "ggh@William james ",
"done" : 0,
"taskID" : "00029",
"status" : "Pending",
"states" : [
"Alabama - AL",
"Alaska - AK"
],
"active" : true,
"updatedAtUtc" : ISODate("2021-11-18T12:26:37.616Z"),
"updatedBy" : ""
在我的 c# webapi 项目中,我总是从以下形式的 api 请求中获得一个名为 filterCriteria 的数组:
filterCriteria=[
key:"purpose",value:"test purpose",type:"eq",
key:"active",value:true,type:"eq"
]
现在我想使用给定的 filterCriteria 查询 mongo 收集任务。
尝试使用 LINQ 语句但没有使用 --hardcoding 工作但动态不工作。 我怎样才能做到这一点???
【问题讨论】:
究竟是什么不工作?你能展示你写的代码,但它没有按预期工作吗? 【参考方案1】:也许你正在寻找Builders:
public enum FilterType
eq=1,//equal
gt=2//greater than
//************
var builder = Builders<FilterCritertiaModel>.Filter;
var query = builder.Empty;
foreach(var filterCriteriaItem in filterCriteria)
switch (filterCriteriaItem.type)
case eq:
query &= builder.Eq(filterCriteriaItem.Key, filterCriteriaItem.Value);
case gt:
query &=builder.Gt(filterCriteriaItem.Key, filterCriteriaItem.Value);
//all cases....
【讨论】:
IMongoQuery 似乎没有找到,我们应该为它使用什么命名空间??我已经在使用 MongoDb.Driver 是的,抱歉,已弃用,我已对其进行了编辑 谢谢,成功了。 很高兴能帮上忙,您可以将其标记为已回答 我一直无法从 api 获取条件数组。我得到了该过滤条件数组的 json 字符串化字符串。我无法将其转换为 c# 条件对象列表以上是关于在 C# 中动态查询 Mongo 集合的主要内容,如果未能解决你的问题,请参考以下文章