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" }
}
}
}
}