我有一系列父文档,包含20到500之间的嵌套文档。如何限制为每个父文档显示的嵌套文档的数量。
下面是我的文档和嵌套文档的结构。
[{
id
title
users: [{
user_id: 1,
timestamp: 2354218,
field3: 4
}, {
user_id: 1,
timestamp: 2354218,
field3: 4
}, {
user_id: 1,
timestamp: 2354218,
field3: 4
},
...
]
}, {
},
...
]
我想限制为每个父文档显示的用户数。怎么样?
db.movies.aggregate(
[{$match: {
"movie_title": "Toy Story (1995)"}
},{
$lookup: {
from: "users",
localField: "users.user_id",
foreignField: "users.id",
as: "users"
}
},
{$project: {
movie_title: "$movie_title",
users: { $slice: [ "$users", 1 ] }
}}
]);
答案 0 :(得分:3)
您可以尝试以下查询。使用n
获取每个文档的嵌套文档数组中的大多数第一个db.collection.aggregate([{ $project: { title: 1, nUsers: { $slice: [ "$users", n ] } } ])
元素。
db.collection.find({}, { title: 1, nUsers: {$slice: n } })
或使用常规查询。
public function update($id)
{
if(Auth::user()->id != $id)
{
// return Access error here
}
// Update profile here
}