如何在mongo中投影数组的元素?

时间:2018-03-29 14:49:12

标签: mongodb projection

我有一个包含类似

的mongo文档
{date: [2018, 3, 22]}

当我尝试将这个字段连接成平面JSON结构时,我总是得到一个包含0个元素的数组,例如。只用

提取年份
db.getCollection('blah').aggregate([
  {$project: {year: "$date.0"}}
])

我得到了

{"year" : []}

即使匹配相似的表达式也能正常工作,例如

db.getCollection('blah').aggregate([
  {$match: {"$date.0": 2018}}
])

选择我期望的文件。

我做错了什么?我已经搜索过mongo文档和stackoverflow,但却找不到任何内容。

1 个答案:

答案 0 :(得分:2)

对于$project,您应该使用$arrayElemAt代替仅用于查询的点符号。

db.getCollection('blah').aggregate([
 {$project: {year: { $arrayElemAt: [ "$date", 0 ] }}}
])

更多here

相关问题