代码之家  ›  专栏  ›  技术社区  ›  CodyBugstein

在MongoDB聚合中,$这意味着什么?

  •  -1
  • CodyBugstein  · 技术社区  · 7 年前

    a Mongo Aggregation example I've encountered 表达式 $$this ,但在MongoDB文档中找不到对它的引用(甚至在有关 aggregation variables )

    以下是示例数据:

    { "_id" : 1, "actions" : [ 2, 6, 3, 8, 5, 3 ] }
    { "_id" : 2, "actions" : [ 6, 4, 2, 8, 4, 3 ] }
    { "_id" : 3, "actions" : [ 6, 4, 6, 4, 3 ] }
    { "_id" : 4, "actions" : [ 6, 8, 3 ] }
    { "_id" : 5, "actions" : [ 6, 8 ] }
    { "_id" : 6, "actions" : [ 6, 3, 11, 8, 3 ] }
    { "_id" : 7, "actions" : [ 6, 3, 8 ] }
    

    这是密码

    这是我看到的代码:

    db.test.aggregate([
        {$match:{actions:{$all:[6,3,8]}}},
        {$project:{actions638:{$map:{
           input:{$range:[0,{$subtract:[{$size:"$actions"},2]}]},
           in:{$slice:["$actions","$$this",3]}
        }}}}
    ])
    

    这里是输出

    { "_id" : 1, "actions638" : [ [ 2, 6, 3 ], [ 6, 3, 8 ], [ 3, 8, 5 ], [ 8, 5, 3 ] ] }
    { "_id" : 2, "actions638" : [ [ 6, 4, 2 ], [ 4, 2, 8 ], [ 2, 8, 4 ], [ 8, 4, 3 ] ] }
    { "_id" : 4, "actions638" : [ [ 6, 8, 3 ] ] }
    { "_id" : 6, "actions638" : [ [ 6, 3, 11 ], [ 3, 11, 8 ], [ 11, 8, 3 ] ] }
    { "_id" : 7, "actions638" : [ [ 6, 3, 8 ] ] }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   CodyBugstein    7 年前

    $$this 引用数组中由 $map 功能。

    另一种选择是使用 as 属性,以便不引用 $$这个 您指的是您在 作为 .例如( from the docs )

    db.grades.aggregate(
       [
          { $project:
             { adjustedGrades:
                {
                  $map:
                     {
                       input: "$quizzes",
                       as: "grade",
                       in: { $add: [ "$$grade", 2 ] }
                     }
                }
             }
          }
       ]
    )