草庐IT

mongodb - 选择按字段分组的文档

coder 2023-11-06 原文

我有这个显示时间和日期的电影文件:

`{
   "_id": ObjectId("5628668c3e82c49245b7acdc"),
   "ticketID": ObjectId("5606d36b5fbd7d76028b4b08"),
   "uid": "50000",
   "day": "Friday",
   "date": "2015-10-23 21:05:00",
   "adult": NumberLong(550),
   "student": NumberLong(550),
   "children": NumberLong(250),
   "limit": NumberLong(20),
   "sold": NumberLong(0) 
},{
   "_id": ObjectId("562866013e82c49045b7acdc"),
   "ticketID": ObjectId("5606d36b5fbd7d76028b4b08"),
   "uid": "50000",
   "day": "Friday",
   "date": "2015-10-23 19:30:00",
   "adult": NumberLong(1050),
   "student": NumberLong(800),
   "children": NumberLong(550),
   "limit": NumberLong(20),
   "sold": NumberLong(0) 
},{
   "_id": ObjectId("562865013e82c49845b7acda"),
   "ticketID": ObjectId("5606d36b5fbd7d76028b4b08"),
   "uid": "50000",
   "day": "Friday",
   "date": "2015-10-23 18:45:00",
   "adult": NumberLong(1500),
   "student": NumberLong(750),
   "children": NumberLong(750),
   "limit": NumberLong(20),
   "sold": NumberLong(0) 
}
`

我想将最终结果按“天”分组,其中“ticketID”匹配,“日期”作为对象并将“成人”,“学生”,“ child ”,“限制”添加到数组

-- 更新 --

我希望返回的结构如下:

{
  "_id": "ticketID",
  "day": "Friday",
  "items": [
    {
      "date": date,
      "time": time"adult": price,
      "children": price,
      "student": price,
      "limit": value
    },
    {
      "date": date,
      "time": time"adult": price,
      "children": price,
      "student": price,
      "limit": value
    },
    {
      "date": date,
      "time": time"adult": price,
      "children": price,
      "student": price,
      "limit": value
    }
  ]
}

最佳答案

运行以下使用 $group 的聚合管道 运算符按指定字段对文档进行分组,使用累加器运算符添加 items 数组 $push 返回每个组的表达式值数组。 <强> $project 管道运算符(operator)然后通过修改字段来 reshape 文档以获得最终所需的结构:

var pipeline = [
    {
        "$group": {
            "_id": {
                "ticketID": "$ticketID",
                "day": "$day"
            },
            "items": {
                "$push": {
                    "date": "$date",
                    "time": "$time",
                    "adult": "$adult",
                    "children": "$children",
                    "student": "$student",
                    "limit": "$limit"
                }
            }
        }
    },
    {
        "$project": {
            "_id": "$_id.ticketID",
            "day": "$_id.day",
            "items": 1
        }
    }
];

db.collection.aggregate(pipeline);

关于mongodb - 选择按字段分组的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33869429/

有关mongodb - 选择按字段分组的文档的更多相关文章

  1. ruby-on-rails - 按天对 Mongoid 对象进行分组 - 2

    在控制台中反复尝试之后,我想到了这种方法,可以按发生日期对类似activerecord的(Mongoid)对象进行分组。我不确定这是完成此任务的最佳方法,但它确实有效。有没有人有更好的建议,或者这是一个很好的方法?#eventsisanarrayofactiverecord-likeobjectsthatincludeatimeattributeevents.map{|event|#converteventsarrayintoanarrayofhasheswiththedayofthemonthandtheevent{:number=>event.time.day,:event=>ev

  2. ruby-on-rails - 如何验证非模型(甚至非对象)字段 - 2

    我有一个表单,其中有很多字段取自数组(而不是模型或对象)。我如何验证这些字段的存在?solve_problem_pathdo|f|%>... 最佳答案 创建一个简单的类来包装请求参数并使用ActiveModel::Validations。#definedsomewhere,atthesimplest:require'ostruct'classSolvetrue#youcouldevencheckthesolutionwithavalidatorvalidatedoerrors.add(:base,"WRONG!!!")unlesss

  3. ruby-on-rails - form_for 中不在模型中的自定义字段 - 2

    我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢

  4. ruby-on-rails - 在 Rails 和 ActiveRecord 中查询时忽略某些字段 - 2

    我知道我可以指定某些字段来使用pluck查询数据库。ids=Item.where('due_at但是我想知道,是否有一种方法可以指定我想避免从数据库查询的某些字段。某种反拔?posts=Post.where(published:true).do_not_lookup(:enormous_field) 最佳答案 Model#attribute_names应该返回列/属性数组。您可以排除其中一些并传递给pluck或select方法。像这样:posts=Post.where(published:true).select(Post.attr

  5. ruby - Rails 3 的 RGB 颜色选择器 - 2

    状态:我正在构建一个应用程序,其中需要一个可供用户选择颜色的字段,该字段将包含RGB颜色代码字符串。我已经测试了一个看起来很漂亮但效果不佳的。它是“挑剔的颜色”,并托管在此存储库中:https://github.com/Astorsoft/picky-color.在这里我打开一个关于它的一些问题的问题。问题:请建议我在Rails3应用程序中使用一些颜色选择器。 最佳答案 也许页面上的列表jQueryUIDevelopment:ColorPicker为您提供开箱即用的产品。原因是jQuery现在包含在Rails3应用程序中,因此使用基

  6. Matlab imread()读到了什么 (浅显 当复习文档了) - 2

    matlab打开matlab,用最简单的imread方法读取一个图像clcclearimg_h=imread('hua.jpg');返回一个数组(矩阵),往往是a*b*cunit8类型解释一下这个三维数组的意思,行数、数和层数,unit8:指数据类型,无符号八位整形,可理解为0~2^8的数三个层数分别代表RGB三个通道图像rgb最常用的是24-位实现方法,即RGB每个通道有256色阶(2^8)。基于这样的24-位RGB模型的色彩空间可以表现256×256×256≈1670万色当imshow传入了一个二维数组,它将以灰度方式绘制;可以把图像拆分为rgb三层,可以以灰度的方式观察它figure(1

  7. ruby - 在 Ruby 中创建按公共(public)键值分组的新哈希 - 2

    假设我有一个在Ruby中看起来像这样的哈希:{:ie0=>"Hi",:ex0=>"Hey",:eg0=>"Howdy",:ie1=>"Hello",:ex1=>"Greetings",:eg1=>"Goodday"}有什么好的方法可以将它变成如下内容:{"0"=>{"ie"=>"Hi","ex"=>"Hey","eg"=>"Howdy"},"1"=>{"ie"=>"Hello","ex"=>"Greetings","eg"=>"Goodday"}} 最佳答案 您要求一个好的方法来做到这一点,所以答案是:一种您或同事可以在六个月后理解

  8. ruby-on-rails - Sphinx - 何时对字段使用 'has' 和 'indexes' - 2

    我几天前在我的ruby​​onrails2.3.2上安装了Sphinx和Thinking-Sphinx,基本搜索效果很好。这意味着,没有任何条件。现在,我想用一些条件过滤搜索。我有公告模型,索引如下所示:define_indexdoindexestitle,:as=>:title,:sortable=>trueindexesdescription,:as=>:description,:sortable=>trueend也许我错了,但我注意到只有当我将:sortable=>true语法添加到这些属性时,我才能将它们用作搜索条件。否则它找不到任何东西。现在,我还在使用acts_as_tag

  9. ruby - 我正在学习编程并选择了 Ruby。我应该升级到 Ruby 1.9 吗? - 2

    我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or

  10. Ruby - 如何处理子类意外覆盖父类(super class)私有(private)字段的问题? - 2

    假设您编写了一个类Sup,我决定将其扩展为SubSup。我不仅需要了解你发布的接口(interface),还需要了解你的私有(private)字段。见证这次失败:classSupdefinitialize@privateField="fromsup"enddefgetXreturn@privateFieldendendclassSub问题是,解决这个问题的正确方法是什么?看起来子类应该能够使用它想要的任何字段而不会弄乱父类(superclass)。编辑:equivalentexampleinJava返回"fromSup",这也是它应该产生的答案。 最佳答案

随机推荐