$ split并返回mongodb查询中的第一个数组元素

mmu*_*478 4 mongodb mongodb-query aggregation-framework

[
  {lecture : "427#Math"},
  {lecture : "217#Science"},
  {lecture : "7#History"},
  {lecture : "12#Music"}
]
Run Code Online (Sandbox Code Playgroud)

假设我有上面的数据库结构.我想只返回讲座代码.到目前为止我做了什么?

db.collection.aggregate([
    {$project: {"lecture": {$split: ["$lecture" , "#"]}}}
])
Run Code Online (Sandbox Code Playgroud)

但这会作为集合返回["427" , "Math"].如何只返回作为#角色前面部分的演讲代码.

Ale*_*lex 9

您可以使用$ arrayElemAt仅返回$splitresult中的第一项:

db.collection.aggregate([
    {$project: {"lecture": {$arrayElemAt:[{$split: ["$lecture" , "#"]}, 0]}}}
])
Run Code Online (Sandbox Code Playgroud)