I am new to the MongoDB. I have one document named Documents in which I have multiple data as mentioned below
Data 1 -
{
"ProjId": 18586,
"ArtifactAttributes": [
{
"AttributeName": "Author",
"AttributeValue": "XYZ"
},
{
"AttributeName": "Address",
"AttributeValue": "Addrr1"
},
{
"AttributeName": "Owner",
"AttributeValue": "manoj.naik"
}
]
}
Data 2 -
{
"ProjId": 18587,
"ArtifactAttributes": [
{
"AttributeName": "Author",
"AttributeValue": "ABC"
},
{
"AttributeName": "Address",
"AttributeValue": "Addrr2"
},
{
"AttributeName": "Owner",
"AttributeValue": "kumar.manoj"
}
]
}
Data - 3
{
"ProjId": 18588,
"ArtifactAttributes": [
{
"AttributeName": "Author",
"AttributeValue": "PQR"
},
{
"AttributeName": "Address",
"AttributeValue": "Addrr3"
},
{
"AttributeName": "Owner",
"AttributeValue": "kumar.manoj"
}
]
}
I want to return distinct value where AttributeName is equals to Owner.
Expected Result - [manoj.naik,kumar.manoj]
For that I have written code as below but it is not returning expected result instead of that it is returning all distinct values from AttributeValue not specifically from AttributeName where it has Owner
Result which I am getting is as below
[XYZ,Addrr1,manoj.naik,ABC,Addrr2,kumar.manoj,PQR,Addrr3]
My C# Code -
var ownerFilter = Builders<Documents>.Filter.ElemMatch(x => x.ArtifactAttributes, p => p.AttributeName.Equals("Owner"));
var ownerValueFieldDefinition = new StringFieldDefinition<Documents, string>("ArtifactAttributes.AttributeValue");
var distinctItems = _projectArtifacts.Distinct(ownerValueFieldDefinition, ownerFilter).ToList();