MongoDB - 仅获取填充文档中数组中的第一项 - 例如user.populate('posts', 'images.0')
MongoDB - Only fetch the first item in an array on a populated document - e.g. user.populate('posts', 'images.0')
假设我正在使用 posts
字段获取用户。每个 post
都有一个字段 images
。我想填充用户的 post,但只从每个 post 中获取第一张图像。我怎样才能做到这一点?我给出了以下示例,但它不起作用:
db.User.findOne().populate('posts', 'images.0')
可以使用$slice投影运算符指定数组中的元素个数为return查询结果
db.User.findOne().populate('posts', { 'images': { '$slice': 1 } })
如果你想 select 直接字符串而不是字符串数组使用 $arrayElemAt or $first 聚合运算符 从 MongoDB 4.4 开始,
$arrayElemAt
db.User.findOne().populate('posts', { 'images': { '$arrayElemAt': ["$images", 0] } })
$first
db.User.findOne().populate('posts', { 'images': { '$first': "$images" } })
假设我正在使用 posts
字段获取用户。每个 post
都有一个字段 images
。我想填充用户的 post,但只从每个 post 中获取第一张图像。我怎样才能做到这一点?我给出了以下示例,但它不起作用:
db.User.findOne().populate('posts', 'images.0')
可以使用$slice投影运算符指定数组中的元素个数为return查询结果
db.User.findOne().populate('posts', { 'images': { '$slice': 1 } })
如果你想 select 直接字符串而不是字符串数组使用 $arrayElemAt or $first 聚合运算符 从 MongoDB 4.4 开始,
$arrayElemAt
db.User.findOne().populate('posts', { 'images': { '$arrayElemAt': ["$images", 0] } })
$first
db.User.findOne().populate('posts', { 'images': { '$first': "$images" } })