C# 从C中查找MongoDB文档中的特定元素#

C# 从C中查找MongoDB文档中的特定元素#,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,我正在尝试从C#ASP.NET应用程序访问MongoDB 让我们假设,我有一个如下的文档- { “_id”:ObjectId(“546c776b3e23f5f2ebdd3b03”), “名称”:“测试”, “价值”:[ { “名称”:“一”, “价值”:1 }, { “姓名”:“两个”, “价值”:2, “参数”:[{“类型”:“类型A”},{“类型”:“类型B”}] } ] } 请注意,只有\u id和Name元素是固定的;其他元素由用户动态创建,其中键和值都由用户定义 现在,我想搜索值为

我正在尝试从C#ASP.NET应用程序访问MongoDB

让我们假设,我有一个如下的文档-

{
“_id”:ObjectId(“546c776b3e23f5f2ebdd3b03”),
“名称”:“测试”,
“价值”:[
{
“名称”:“一”,
“价值”:1
}, 
{
“姓名”:“两个”,
“价值”:2,
“参数”:[{“类型”:“类型A”},{“类型”:“类型B”}]
}
]
}
请注意,只有
\u id
Name
元素是固定的;其他元素由用户动态创建,其中键和值都由用户定义


现在,我想搜索值为
typea
的元素
Type
。如何从MongoDB C#驱动程序执行此操作?

下面的聚合查询可以解决您的问题,但我不知道如何用C#编写此操作

您可以使用以下代码:

var query = Query.EQ("Values.Parameters.Type", "Type A");
var items = collection.Find(query).ToList();
如果您有数据结构,请使用以下方法:

var items = collection.FindAs<Item>(query).ToList();
var items=collection.FindAs(query.ToList();
编辑: 对于动态搜索,我想到的唯一方法是全文搜索:

步骤1:通过
db.test.ensureIndex({“$**”:“text”)定义所有字段的全文搜索

第2步:搜索您的查询
db.test.find({$text:{$Search:“键入A”}})


如果这是您的答案,C代码应该很简单。

是否要搜索参数。键入值?我已经更新了我的问题。“值。参数”由用户动态定义。这里可能有更多的元素,即“Values.Parameters.Element1.Element2”或“Values.Element1.Element2.Parameters”。我只搜索“类型”:“类型A”。可能吗?这些函数(
FindAs
Query
)来自哪个命名空间?
var items = collection.FindAs<Item>(query).ToList();