如何计算猫鼬中另一个馆藏的文件?

时间:2018-12-23 02:30:06

标签: javascript database mongodb mongoose

我想知道如何获取特定的字段值?

在我的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 :(得分:1)

考虑最简单的情况,其中有两个如下所示的集合:

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

您可以使用$lookup通过指定定义“关系”的字段来将数据从col2col1中,然后可以使用$size获取数字元素,请尝试:

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

输出:

{ "_id" : 1, "col2size" : 3 }