我可以以某种方式添加具有静态(未计算)值的自定义字段吗?
我想在发送之前准备对象,我需要删除一些包含内部信息的字段,并添加一些实体ID字段。
例如,我有像这样的对象的集合“test”
{_id: ObjectId(...), data: {...}}
我需要将其转换为
{data: {...}, entity_id: 54}
那么如何在我的代码中不添加循环结果的情况下添加entity_id:54?
db.test.aggregate({ $project: {_id: 0, data: 1, entity_id: ? } })
由于
答案 0 :(得分:39)
请注意,$ literal是在Mongo 2.6中实现的。 所以现在你可以简单地写一下:
db.test.aggregate(
{$project: {_id: 0, data: 1, entity_id: {$literal: 54}}})
请参阅$literal。
答案 1 :(得分:20)
编辑从2.6开始存在$literal
表达式,因此您现在不必使用此解决方法。
原始答案:我知道这可能听起来很愚蠢,但你可以使用“无操作”表达来“计算”你需要的东西。
示例:
db.test.aggregate( { $project : {_id:0, data:1, entity_id: {$add: [54]} } } )
有一个提议的$literal
运算符用于此用例,但尚未实现,您可以为其投票here。