【问题标题】:How to get counting of documents from another collection in mongoose?如何从猫鼬的另一个集合中计算文档?
【发布时间】:2019-05-22 20:52:10
【问题描述】:

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

在我的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 是如何工作的 :(

【问题讨论】:

    标签: javascript database mongodb mongoose


    【解决方案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将数据从col2获取到col1,通过指定哪些字段定义“关系”,然后您可以使用$size获取元素个数,试试:

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

    输出:

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

    【讨论】:

    • 非常感谢 :) Micki 谢谢你我学会了查找方法~圣诞快乐 :)
    猜你喜欢
    • 1970-01-01
    • 2022-08-08
    • 1970-01-01
    • 2020-08-14
    • 2017-04-28
    • 2021-06-03
    • 2014-09-25
    • 2016-04-20
    • 1970-01-01
    相关资源
    最近更新 更多