C# 从C中查找MongoDB文档中的特定元素#
我正在尝试从C#ASP.NET应用程序访问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元素是固定的;其他元素由用户动态创建,其中键和值都由用户定义 现在,我想搜索值为
{
“_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();