Как получить подсчет документов из другой коллекции в мангусте? - PullRequest
0 голосов
/ 23 декабря 2018

Я хотел бы знать, как я могу получить определенное значение поля?

В моем mysql:

select *, 
(select count(qty) from score where id = a.id) as d_qty 
from mlbhitters as a order by no desc

В моем мангусте:

 this.aggregate([
    {
        $match:options.query
    }, 
    {
        $sort:{
            no:-1
        }
    },
    {
        $limit:options.limit
    }
]).exec(callback);

Вот в чем смысл вставлять подзапрос в свой мангуст?

(select count(qty) from score where id = a.id) as d_qty 

MongoDB трудно понять, как он работает: (

1 Ответ

0 голосов
/ 23 декабря 2018

Рассматривая простейший сценарий, где у вас есть две коллекции, как показано ниже:

db.col1.save({ _id: 1 })
db.col2.save({ col1_id: 1 })
db.col2.save({ col1_id: 1 })
db.col2.save({ col1_id: 1 })

, вы можете использовать $ lookup , чтобы получить данные из col2 в col1, указав, какие поляопределите «отношение», и тогда вы можете использовать $ size , чтобы получить количество элементов, попробуйте:

db.col1.aggregate([
    {
        $lookup: {
            from: "col2",
            localField: "_id",
            foreignField: "col1_id",
            as: "col2docs"
        }
    },
    {
        $project: {
            col2size: { $size: "$col2docs" }
        }
    }
])

output:

{ "_id" : 1, "col2size" : 3 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...