Tôi không thể giới hạn số lượng các phần tử được đẩy trong một chức năng nhóm với đường ống tổng hợp. Điều này có thể không? ví dụ nhỏ:Đường ống tập hợp Mongodb làm thế nào để giới hạn một nhóm push
dữ liệu:
[
{
"submitted": date,
"loc": {
"lng": 13.739251,
"lat": 51.049893
},
"name": "first",
"preview": "my first"
},
{
"submitted": date,
"loc": {
"lng": 13.639241,
"lat": 51.149883
},
"name": "second",
"preview": "my second"
},
{
"submitted": date,
"loc": {
"lng": 13.715422,
"lat": 51.056384
},
"name": "nearpoint2",
"preview": "my nearpoint2"
}
]
Đây là đường ống kết hợp của tôi:
var pipeline = [{
//I want to limit the data to a certain area
$match: {
loc: {
$geoWithin: {
$box: [
[locBottomLeft.lng, locBottomLeft.lat],
[locUpperRight.lng, locUpperRight.lat]
]
}
}
}
},
// I just want to get the latest entries
{
$sort: {
submitted: -1
}
},
// I group by name
{
$group: {
_id: "$name",
< --get name
submitted: {
$max: "$submitted"
},
< --get the latest date
locs: {
$push: "$loc"
},
< --push every loc into an array THIS SHOULD BE LIMITED TO AN AMOUNT 5 or 10
preview: {
$first: "$preview"
}
}
},
//Limit the query to at least 10 entries.
{
$limit: 10
}
];
Làm thế nào tôi có thể giới hạn mảng locs
-10
hoặc bất kỳ kích thước khác? Tôi đã thử một cái gì đó với $each
và $slice
nhưng điều đó dường như không hoạt động.
Có không có cách nào để làm điều này trực tiếp chỉ bằng cách ấn? – Nickpick
Bạn không thể thực hiện việc này tại thời điểm này @Nickpick – styvane