Выборка для каждого элемента в массиве в MongoDb - PullRequest
1 голос
/ 01 мая 2020

У меня есть коллекция пользователей. Я храню идентификаторы пользователей, за которыми я следую, в поле «подписки».

{
     "_id": {
     "$oid": "5eab360253ec352e3cc791d6"
     },
     "email": "koray@gmail.com",
     "password": "81dc9bdb52d04dc20036dbd8313ed055",
     "following": ["5ea8879dfc286e1154a866cb", "5ea8879dfc286e1154a866c"],
     "posts": [{
        "head": "deneme header",
        "body": "deneme body",
        "is_private": false
    }]
}

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

1 Ответ

0 голосов
/ 01 мая 2020

Вы можете использовать $ lookup с пользовательским конвейером и извлекать документы из одной коллекции:

db.collection.aggregate([
    { $match: { _id: "5eab360253ec352e3cc791d6" } },
    {
        $lookup: {
            from: "collection",
            let: { following_users: "$following" },
            pipeline: [
                { $match: { $expr: { $in: [ "$_id", "$$following_users" ] } } },
                { $project: { posts: 1 } }
            ],
            as: "following_posts"
        }
    }
])

Пн go Детская площадка

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