如何从猫鼬的另一个集合中计算文档?

Posted

技术标签:

【中文标题】如何从猫鼬的另一个集合中计算文档?【英文标题】: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 是如何工作的 :(

【问题讨论】:

【参考方案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 谢谢你我学会了查找方法~圣诞快乐 :)

以上是关于如何从猫鼬的另一个集合中计算文档?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以从猫鼬的文档中获取模型?

如何从猫鼬的数组中找到对象

如何在猫鼬的集合中找到文档项的平均值?

如何从猫鼬集合中检索模式?

如何在猫鼬的嵌入式文档中填充字段?

你如何从猫鼬中删除模型?