MongoDB - получить один элемент из запроса агрегации - PullRequest
0 голосов
/ 29 июня 2019

Я использую следующий запрос агрегации:

db.posts.aggregate([
    {
        $lookup: {
            from: "profiles",        
            localField: "user",
            foreignField: "user",
            as: "userDetails"
        }
    }
])

Возвращает результат, который выглядит следующим образом:

{
    "_id" : ObjectId("5d1523b98d9dd16d832a8c5e"),
    "user" : ObjectId("5d1504e29dc0bd55461adca7"),
    "recipeName" : "Pizza",
    "ingredients" : "Flour and sauce",
    "userDetails" : [ 
        {
            "_id" : ObjectId("5d1505089dc0bd55461adca8"),
            "user" : ObjectId("5d1504e29dc0bd55461adca7"),
            "handle" : "jack",
            "status" : "Developer"
        }
    ]
}

Включает весь «профиль» в качестве ключа, называемого «UserDetails».Однако я не хочу всю эту информацию.Мне нужна только ручка пользователя.Я хочу, чтобы результат выглядел точно примерно так:

{
    "_id" : ObjectId("5d1523b98d9dd16d832a8c5e"),
    "user" : ObjectId("5d1504e29dc0bd55461adca7"),
    "recipeName" : "Pizza",
    "ingredients" : "Flour and sauce",
    "handle" : "jack"
}

Как мне это сделать?

1 Ответ

0 голосов
/ 01 июля 2019

если вам нужен результат, выполните этот запрос,

db.posts.aggregate ([{$ lookup: {from: 'profile', localField: 'user', foreignField: 'user', as: ''userDetails '}}, {' $ unwind ':' $ userDetails '}, {$ addFields: {' handle ':' $ userDetails.handle '}}, {$ project: {' _id ': 1,' user ':1, 'recipeName': 1, 'ингридиенты': 1, 'handle': 1}}]) `

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