如何使用猫鼬获取所有文件及其计数

Posted

技术标签:

【中文标题】如何使用猫鼬获取所有文件及其计数【英文标题】:How to get all documents and its count with mongoose 【发布时间】:2021-02-02 18:54:38 【问题描述】:

我有一个模型叫 car 这个模型有 21 个文档

但我想要

获取与 ma​​ke 属性匹配的所有文档数 并创建具有 count 属性及其文档的新对象数组

例子

型号

const Car = new Schema(
  make: 
    type: String,
    required: true,
  ,
  model: 
    type: String,
    required: true,
  ,
  year: 
    type: Number,
    required: true,
  ,
  fuelType: 
    type: String,
    required: true,
  ,
  kilometers: 
    type: Number,
    required: true,
  ,
  details: 
    type: String,
    required: true,
  ,
  price: 
    type: Number,
    required: true,
  ,
  photoUrl: 
    type: String,
    required: true,
  ,
);

我想获取所有具有这种形状的文档

const cars = [
  
     make: 'Volkswagen',
     model: 'Tiguan',
     year: 2007,
     kilometers: 411019541855812,
     fuelType: 'Diesel',
     price: 14299,
     photoUrl: '/photos/cars/...jpg',
     details: 'Lorem ipsum..',
     count: 3
  ,
  
     ....
  

]

最终目的是打印汽车“模型”及其数量

"Volkswagen Tiguan (5)"

【问题讨论】:

【参考方案1】:

您可以使用聚合来执行此操作。

Model.aggregate([
  
    $match: 
      make: "Volkswagen"
    
  ,
  
    "$group": 
      _id: 
        make: "$make",
        model: "$model"
      ,
      count: 
        $sum: 1
      
    
  ,
  
    $project: 
      make: "$_id.make",
      model: "$_id.model",
      count: "$count",
      _id: 0
    
  
])

这里首先我们filter基于make的文档,然后group基于makemodel的文档

预期输出

[
  
    "count": 2,
    "make": "Company 1",
    "model": "Model 1"
  ,
  
    "count": 1,
    "make": "Company 1",
    "model": "Model 2"
  
]

【讨论】:

感谢哥们的解决方案,我也解决了这个问题,只有 $group 和 $project 这样的 Car.aggregate([ $group: _id: "$make", count: $sum : 1 , 品牌: $max: "$make" , 模型: $max: "$model" , .... , , $project: _id: 0, make: 1, 模型: 1, 计数: 1, ..... , , ]);【参考方案2】:
    Cars.find().select("make model count").then(cars =>
   cars.forEach(car =>
          Console.log(car.make ,car.model , car.count)
     )
)

好吧,从您的输出来看,我相信您只需要制造、模型和计数。所以我添加了选择属性。如果你想检索你车的所有属性,那么你可以从上面删除选择属性

【讨论】:

以上是关于如何使用猫鼬获取所有文件及其计数的主要内容,如果未能解决你的问题,请参考以下文章

sh 获取目录中的所有扩展名及其各自的文件计数

如何使用猫鼬获取文档的特定键值

如何避免在对象内部创建对象并使用猫鼬将元素直接推送到快速数组中?

如何通过后端基于过滤器获取计数

如何从 .vcxproj 文件中获取所有项目宏及其值

如何使用猫鼬防止重复文件mongodb