MongoDB:使用静态值聚合$ project add字段

时间:2013-02-27 11:21:30

标签: mongodb

我可以以某种方式添加具有静态(未计算)值的自定义字段吗?

我想在发送之前准备对象,我需要删除一些包含内部信息的字段,并添加一些实体ID字段。

例如,我有像这样的对象的集合“test”

{_id: ObjectId(...), data: {...}}

我需要将其转换为

{data: {...}, entity_id: 54}

那么如何在我的代码中不添加循环结果的情况下添加entity_id:54?

db.test.aggregate({ $project: {_id: 0, data: 1, entity_id: ? } })

由于

2 个答案:

答案 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