如何在MongoDB中获取数组的第一个元素?
解决MongoDB提取数组第一个元素的问题
针对你的数据模型,要提取special_offers数组的第一个元素,可以用以下两种实用方法:
- 方法一:用
$arrayElemAt直接提取单个对象
适合需要返回单个对象而非数组的场景(MongoDB 3.2及以上版本支持):
db.your_collection_name.find( // 填写你的查询条件,查询所有文档则留空{} {}, { _id: 1, // 保留_id字段,不需要可删除 special_offers: { $arrayElemAt: ["$special_offers", 0] } } )
执行后special_offers字段会直接返回数组的第一个对象,而非包含单个元素的数组。
- 方法二:用
$slice截取数组前N个元素
如果可以接受返回仅含第一个元素的数组,可使用此方法:
db.your_collection_name.find( {}, { _id: 1, special_offers: { $slice: 1 } // 1表示只保留数组的前1个元素 } )
你之前的尝试未生效,大概率是因为仅普通指定返回special_offers字段,没有使用这类数组投影操作符,所以会返回整个数组内容。
内容的提问来源于stack exchange,提问作者Martin AJ
相关产品推荐
相关产品推荐

