Mongodb 添加普通字符串或整数

Mongodb 添加普通字符串或整数,mongodb,Mongodb,总之,我有一个组-子句: { $group: { _id: { town_id: "$_id.town" }, houses_data: { $push: { house_id: "$_id.house_id", price: { $divide: ["$sum", "$tot

总之,我有一个
-子句:

      {  $group: {
                _id: { town_id: "$_id.town" },
                houses_data: { $push:

                     { house_id: "$_id.house_id",
                       price: {
                           $divide: ["$sum", "$total"]
                             }
                      }
                }
             }
       }
就像这样,一切都很好

但是后来我尝试在
房屋数据中添加一个额外的字段
说明

    { house_id: "$_id.house_id",
      price: {
         $divide: ["$sum", "$total"]
      },
      description: "thats a house"
     }
现在我得到一个错误:

但描述不是一个字段。
我想添加描述作为静态字符串值。 因此,在每个
house_data
-数组中,应该有相同的描述

输出应该如下所示:

我错了什么?谢谢

子句中使用运算符,如下所示:

{.. description: {$literal:"thats a house"} ..}
字段路径“2”不是以开头$

指示将该值解析为
表达式
$literal
操作符告诉
mongoDB
-不要将内容解析为
表达式

返回一个值而不进行分析。用于聚合所需的值 管道可以解释为表达式

注意
$group
阶段运算符的语法如下所示:

{ $group: { _id: <expression>, 
            <field1>: { <accumulator1> : <expression1> }, ... } }
{$group:{\u id:,
:{和不能用来代替累加器,但需要成为
表达式的一部分

才是您要寻找的。但是我认为它对
聚合的组阶段
无效。我刚刚尝试了它,但无法使它工作

因此,我建议在管道的组操作之前添加描述字段,然后使用表达式将其保留在组阶段:

 { $project: { 
              _id: 1, 
              sum: 1, 
              total: 1, 
              description: { $literal: "thats a house" } 
              }
 },
 {  $group: {
            _id: { town_id: "$_id.town" },
            houses_data: { $push:

                 { house_id: "$_id.house_id",
                   price: {
                       $divide: ["$sum", "$total"]
                         },
                   description: { $first: "$description" }
                  }
            }
         }
   }

我已经测试过类似的东西,它也能工作。

在group子句中使用
$literal
是完全正确的。它只需要被一个
$group
操作符括起来,比如
$push
。我没有意识到这一点。谢谢你的更正。如果你把它添加到你的例子中,我会非常高兴地投票支持它更好的答案,因为它将为所有人澄清。
{ $group: { _id: <expression>, 
            <field1>: { <accumulator1> : <expression1> }, ... } }
 { $project: { 
              _id: 1, 
              sum: 1, 
              total: 1, 
              description: { $literal: "thats a house" } 
              }
 },
 {  $group: {
            _id: { town_id: "$_id.town" },
            houses_data: { $push:

                 { house_id: "$_id.house_id",
                   price: {
                       $divide: ["$sum", "$total"]
                         },
                   description: { $first: "$description" }
                  }
            }
         }
   }