在数组中查找多个最后一个值

时间:2019-06-03 18:00:43

标签: mongodb jenssegers-mongodb

文档和说明

   "_id":"5cf54fdf146bd8a8e8002fb4",
   "id":2,
   "updated_at":"2019-06-03 16:51:16",
   "created_at":"2019-06-03T16:50:39.000Z",
   "field1":[  
      249,
      249
   ],
   "field2":[  
      310,
      310
   ],
   "evo":{  
      "evot01":[  
         222222,
         220318
      ],
      "evot02":[  
         3199,
         3199
      ],
      "evot03":[  
         686,
         686
      ],
      "evot04":[  
         1324,
         1324
      ]
   },
   "exp":{  
      "exp1":[  
         16394716,
         16394716
      ],
      "exp2":[  
         19567492,
         19567492
      ],
      "exp3":[  
         25616528,
         25616528
      ]
   },
   "power":[  
      55,
      57
   ],

}

我正在为每个用户存储一些数据,并且我想用一个限制来组成一个最重要的“字段”摘要。


案例

evo.evot01创建前5个条目的列表,每个用户内部的值计数可能不同,这就是为什么我使用slice获取最新添加的值。


问题

是否可以通过某种方式创建一个查询,该查询将使用“ field1”和我选择的任何其他选项来征召我的结果文档-可以是多个查询:每个“类别”的前5个条目的数组,或者是否具有分开吗?

可能的问题-调整,我的尝试

对我的文档进行汇总查询-“在所有文档中查找数组中的最后一个值”,将其降序排列并将结果限制为X”

[
                ['$project' => [
                    'evo1' => [
                        '$slice' => [
                            '$evo.evot01', -1
                        ]
                    ],
                    '_id' => '$id'
                ]
                ],
                ['$sort' =>
                    ['evo1' => -1]
                ],
                ['$limit'=>5]
            ],

首先,我尝试展平$slice结果,但没有成功,但显示了所需结果的一个示例:https://imgur.com/a/6ClhU4x,但是仍然缺少多“类别”结果显示。

谢谢您的任何提示-免责声明-我在PHP laravel中使用MongoDB。但是我可以轻松地使原始mongo查询适应我的需求。

0 个答案:

没有答案