文档和说明
"_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查询适应我的需求。