【问题标题】:How do I project an element of an array in mongo?如何在 mongo 中投影数组的元素?
【发布时间】:2018-03-29 14:49:11
【问题描述】:

我有一个包含类似内容的 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,但一无所获。

【问题讨论】:

    标签: mongodb projection


    【解决方案1】:

    对于$project,您应该使用$arrayElemAt,而不是仅适用于查询的点表示法。

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

    更多here

    【讨论】:

    • 太棒了!这样可行。我发现在 mongodb 的哪个上下文中知道哪种表示法工作非常令人困惑。
    猜你喜欢
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-24
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多