(我对mongodb来说是全新的)
假设集合Entities
为:
{
"_id":...,
"name":"Entity1",
"properties": {
"property1":{
"name:"name1",
"value:"value1"
},
{
"property2":{
"name:"name2",
"value:"value2"
},
{
"property3":{
"name:"name3",
"value:"value3"
}
}
},
{
"_id":...,
"name":"Entity2",
"properties": {
"property1":{
"name:"name1",
"value:"value1"
},
{
"property2":{
"name:"name2",
"value:"value2"
},
{
"property3":{
"name:"name3",
"value:"value3"
}
}
}
在C#模型中:
public class Entity {
public ObjectId _id;
public string Name;
public Dictionary<string, Property> Properties;
}
我想使用c#mongodb linq从property2
返回Property
(类型Entity1
)。
我知道如何在shell中查询它但我的问题是无论我尝试在c#linq中查询实体集合,它似乎总是返回实体。找不到它返回子类型的方法。
有可能吗?
PS。 只是为了强调它的返回类型问题而不是查询,我可以在对象内重复“property2”键以进行查询。
答案 0 :(得分:1)
您可以使用以下查找查询。
var result = collection.
Find(x => x.Name == "Entity1").
Project(p => p.Properties.Single(s => s.Key == "property2")).
Single(s => s.Key == "property2").Value;