如何为列添加值?

时间:2014-09-27 02:47:34

标签: mongodb mongodb-query aggregation-framework

我正在使用MongoDB 2.6。

使用find()在Mongo中等效的SQL查询是什么?

select (a * 2) as a from test

我试过

db.test.find({}, {a: { $mul: 2 }, _id: 0})

但没有运气。

2 个答案:

答案 0 :(得分:2)

虽然aggregation framework功能更强大,但如果您的任务不需要记录pipelined through one or more operations,并且就像您引用的示例一样简单,那么您可以使用{{1}功能:

  

将功能应用于光标访问的每个文档并进行收集   从连续应用程序返回到数组的返回值。

如下,

map()

或获取每行的文档:

 db.test.find().map(function(doc) {return doc.a*2});
 o/p: [ 2, 6 ]

答案 1 :(得分:1)

$mul运算符仅用于.update()和类似的方法来永久更新数据。它是多个update operators中的一个,因此在查询中没有位置。

您想要的是改变投影文档的内容。为此,您使用.aggregate()方法:

db.test.aggregate([
    { "$project": {
        "_id": 0,
        "a": { "$multiply": [ "$a", 2 ] }
    }}
])

$project管道阶段基本上是一种更强大的基本投影方法。这里应用$multiply运算符来计算结果。

另请参阅文档中的SQL to aggregation mapping页面,了解MongoDB中常见SQL操作的其他示例。