[
  {lecture : "427#Math"},
  {lecture : "217#Science"},
  {lecture : "7#History"},
  {lecture : "12#Music"}
]

假设我有上面的数据库结构。我只想返回课程代码。
到目前为止我做了什么?
db.collection.aggregate([
    {$project: {"lecture": {$split: ["$lecture" , "#"]}}}
])

但这会以collection["427" , "Math"]的形式返回。我如何才能只返回#字符前面的部分的课程代码。

最佳答案

您可以使用$arrayElemAt只返回$split结果中的第一项:

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

07-28 08:56