如何限制 MongoDB 中显示的嵌套文档数
How to limit the number of nested documents shown in MongoDB
我的父文档数组包含 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 ] }
}}
]);
您可以试试下面的查询。使用 $slice
最多获取每个文档的嵌套文档数组中的前 n
个元素。
db.collection.aggregate([{ $project: { title: 1, nUsers: { $slice: [ "$users", n ] } } ])
或使用常规查询。
db.collection.find({}, { title: 1, nUsers: {$slice: n } })
我的父文档数组包含 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 ] }
}}
]);
您可以试试下面的查询。使用 $slice
最多获取每个文档的嵌套文档数组中的前 n
个元素。
db.collection.aggregate([{ $project: { title: 1, nUsers: { $slice: [ "$users", n ] } } ])
或使用常规查询。
db.collection.find({}, { title: 1, nUsers: {$slice: n } })