MongoDB:具有静态值的聚合$project add字段
我可以用静态(非计算)值添加自定义字段吗 我想在发送之前准备对象,我需要删除一些具有内部信息的字段,并添加具有某些实体ID的字段 例如,我有这样的对象集合“test”MongoDB:具有静态值的聚合$project add字段,mongodb,Mongodb,我可以用静态(非计算)值添加自定义字段吗 我想在发送之前准备对象,我需要删除一些具有内部信息的字段,并添加具有某些实体ID的字段 例如,我有这样的对象集合“test” {_id: ObjectId(...), data: {...}} 我需要把它转换成 {data: {...}, entity_id: 54} 那么,如何添加实体_id:54而不在代码中循环结果呢 db.test.aggregate({ $project: {_id: 0, data: 1, entity_id: ? } })
{_id: ObjectId(...), data: {...}}
我需要把它转换成
{data: {...}, entity_id: 54}
那么,如何添加实体_id:54而不在代码中循环结果呢
db.test.aggregate({ $project: {_id: 0, data: 1, entity_id: ? } })
谢谢编辑从2.6开始,
$literal
表达式已经存在,因此您现在不必使用解决方法
原始答案:我知道这听起来很愚蠢,但你可以使用“no-op”表达式来“计算”你需要的东西
例如:
db.test.aggregate( { $project : {_id:0, data:1, entity_id: {$add: [54]} } } )
有一个建议的
$literal
操作符正好适合这个用例,但它还没有实现,您可以投票支持它。注意,$literal是在Mongo 2.6中实现的。
现在你可以简单地写下:
db.test.aggregate(
{$project: {_id: 0, data: 1, entity_id: {$literal: 54}}})
请参阅。谢谢,$literal确实很有帮助。对您的示例进行了小修改-实体_id:{$add:[54]}对-我想到了一个稍微不同的示例,当然您不需要添加0:)