Присоединяйтесь к коллекциям MongoDB с отдельным свойством - PullRequest
0 голосов
/ 16 июня 2020

Коллекция кандидатов

/* 1 */
{
    "_id" : ObjectId("5ee8d0d16e4fec1ad4779249"),
    "candidate_id" : ObjectId("5ee8d0d26e4fec1ad477924a"),
    "first_name" : "Name1",
}

/* 2 */
{
    "_id" : ObjectId("5ee8d0df6e4fec1ad477924b"),
    "candidate_id" : ObjectId("5ee8d0d26e4fec1ad477924a"),
    "first_name" : "Name2",
}

/* 3 */
{
    "_id" : ObjectId("5eda1afa19722b7decfaa61a"),
    "candidate_id" : ObjectId("5ee0f9f97ee51925b4afa2e6"),
    "first_name" : "Name3",
}

/* 4 */
{
    "_id" : ObjectId("5ea9af047d6a4f6480fd42f4"),
    "candidate_id" : ObjectId("5ee0f9f97ee51925b4afa2e6"),
    "first_name" : "Name4",
}

Коллекция адресов

/* 1 */
{
    "_id" : ObjectId("5ee8d0d266342f5180d3b546"),
    "candidate_id" : ObjectId("5ee8d0d26e4fec1ad477924a"),
    "address" : "Street1",
}

/* 2 */
{
    "_id" : ObjectId("5ee8d0e066342f5180d3b547"),
    "candidate_id" : ObjectId("5ee8d0d26e4fec1ad477924a"),
    "address" : "Street2"
}

/* 3 */
{
    "_id" : ObjectId("5ee0f9f97ee51925b4afa2e7"),
    "candidate_id" : ObjectId("5ee0f9f97ee51925b4afa2e6"),
    "address" : "Street3"
}

/* 4 */
{
    "_id" : ObjectId("5ee0f9f97ee51925b4afa2e8"),
    "candidate_id" : ObjectId("5ee0f9f97ee51925b4afa2e6"),
    "address" : "Street4"
}

У меня есть модели, как показано ниже

public class Candidate
{
    [BsonId]
    public string _ID { get; set; }
    public string Candidate_ID { get; set; }
    public string First_Name { get; set; }
    public List<Address> Addresses { get; set; }
}

public class Address
{
    [BsonId]
    public string _ID { get; set; }
    public string Candidate_ID { get; set; }
    public string Address { get; set; }
}

public class CandidateResponse
{
     public List<Candidate> Candidates { get; set; }
}

Я хочу оставить присоединиться к коллекции кандидатов с адресом collectoin и вернуть модель CandidateResponse

Мне нужны записи из коллекции Candidate с идентификатором кандидата отдельно.

т.е. первая запись каждого идентификатора кандидата из коллекции кандидатов со всеми адресами этого идентификатора кандидата.

Результат должен быть таким, как показано ниже

[
    {
        "_id": ObjectId("5ee8d0d16e4fec1ad4779249"),
        "candidate_id": ObjectId("5ee8d0d26e4fec1ad477924a"),
        "first_name": "Name1",
        "Addresses": [
            {
                "_id": ObjectId("5ee8d0d266342f5180d3b546"),
                "candidate_id": ObjectId("5ee8d0d26e4fec1ad477924a"),
                "address": "Street1"
            },
            {
                "_id": ObjectId("5ee8d0e066342f5180d3b547"),
                "candidate_id": ObjectId("5ee8d0d26e4fec1ad477924a"),
                "address": "Street2"
            }
        ]
    },
    {
        "_id": ObjectId("5eda1afa19722b7decfaa61a"),
        "candidate_id": ObjectId("5ee0f9f97ee51925b4afa2e6"),
        "first_name": "Name3",
        "Addresses": [
            {
                "_id": ObjectId("5ee0f9f97ee51925b4afa2e7"),
                "candidate_id": ObjectId("5ee0f9f97ee51925b4afa2e6"),
                "address": "Street3"
            },
            {
                "_id": ObjectId("5ee0f9f97ee51925b4afa2e8"),
                "candidate_id": ObjectId("5ee0f9f97ee51925b4afa2e6"),
                "address": "Street4"
            }
        ]
    }
]
...