我有很多实体在DB中的这些实体上都有一个大数组。我想检索数组的第一个和最后一个元素(如果我得到所有数组,那么数据太多了)。我该怎么做 ? 我试过这个:
new Proxy
但它不起作用...... 谢谢你!
答案 0 :(得分:1)
您可以使用聚合而不是$match
,执行$slice
。
在Mongodb 3.2中,聚合中有$slice
,因此您可以db.my_collection.aggregate([{
$match: { my_query: 'is_awesome' }
}, {
$project: {
my_query: 1,
firstElement: { $slice: ["$big_array", 1] },
lastElement: { $slice: ["$big_array", -1] }
}
}])
位置1和-1处的项目:
$slice
在Mongodb< 3.2,$unwind
无法在聚合中使用,因此您可以使用$group
和db.my_collection.aggregate([{
$match: { my_query: 'is_awesome' }
}, {
$unwind: "$big_array"
}, {
$group: {
_id: "$_id",
my_query: { $first: "$my_query" },
firstElement: { $first: "$big_array" },
lastElement: { $last: "$big_array" }
}
}])
,以下内容适用于Mongodb 3.0:
...
"items": {
"type": "object",
"properties": {
"description_ru":{
"description": "Информация об ошибке на русском языке",
"type": "string"
},
"description_en":{
"description": "Информация об ошибке на английском языке",
"type": "string"
}
},
"additionalProperties": false
},
"minItems": 2
...