MongoDB Полнотекстовый поиск после объединения 2 коллекций через внешний ключ - PullRequest
0 голосов
/ 03 июля 2018

У меня есть коллекция под названием Team. Пример документа выглядит так -

{ 
"_id" : "TEA000000006", 
"name" : "Team 1rrr", 
"teamMembers" : [
    {
        "_id" : "1", 
        "employeeRef" : "000000", 
        "teamRoleRef" : "TMR000000012"
    }, 
    {
        "_id" : "2", 
        "employeeRef" : "27375", 
        "teamRoleRef" : "TMR000000012"
    }, 
    {
        "_id" : "3", 
        "employeeRef" : "15607", 
        "teamRoleRef" : "TMR000000012"
    }, 
    {
        "_id" : "4", 
        "employeeRef" : "52321", 
        "teamRoleRef" : "TMR000000012"
    }, 
    {
        "_id" : "5", 
        "employeeRef" : "000000", 
        "teamRoleRef" : "TMR000000016"
    }, 
    {
        "_id" : "6", 
        "employeeRef" : "27375", 
        "teamRoleRef" : "TMR000000016"
    }, 
    {
        "_id" : "7", 
        "employeeRef" : "15607", 
        "teamRoleRef" : "TMR000000035"
    }, 
    {
        "_id" : "8", 
        "employeeRef" : "52321", 
        "teamRoleRef" : "TMR000000035"
    }
]
}

У меня есть еще одна коллекция - TeamMember. Документ от этого выглядит так -

{
"_id" : "1",
"teamId" : "TEA000000006",
"employeeRef" : "000000",
"memberDisplayName" : "Anonoymous",
"memberTitle" : "BPO",
"memberLocation" : "Earth, Milkyway, Universe",
"memberBusinessPhone" : "123456789",
"memberEmail" : "anon@anon",
"teamRoleRef" : "TMR000000012",
"teamRoleSequence" : "4",
"roleName" : "Analyst"
}

При поиске по Team мне нужно присоединить коллекцию TeamMember к Team через ключ teamRoleRef.

Как мне сделать это и код для этого в MongoDB v3.4 и Java MongoDB Driver (v2.0.6.RELEASE)

1 Ответ

0 голосов
/ 03 июля 2018
db.Team.aggregate([
                {"$unwind" : "$teamMembers"},
                {"$project" : {"teamRoleRef" : "$teamMembers.teamRoleRef"}},
                {"$lookup" : {
                    "from" : "TeamMember",
                    "localField" : "teamRoleRef",
                    "foreignField" : "teamRoleRef",
                    "as" : "teamMember_docs"
                }}])

$ * поиск 1003 *

Драйвер Java Ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...