我正在使用MongoDB 2.6。
使用find()在Mongo中等效的SQL查询是什么?
select (a * 2) as a from test
我试过
db.test.find({}, {a: { $mul: 2 }, _id: 0})
但没有运气。
答案 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操作的其他示例。