在 SQL 中我可以做类似的事情
SELECT myNum, (myNum+1) as `increment` FROM myTable
有效地执行任意数学和其他函数,并将它们作为结果中的字段返回。 MongoDB 也可以做同样的事情吗?
db.test.find({}, {_id:1, myNum:1, increment:function() { return this.myNum + 1;}});
这不会像我期望的那样返回“增量”字段。
我在这个主题上可以找到的所有其他相关问题都涉及分组查询,而这个不是;我只是在获取文档时向其添加一个“虚拟”字段(客户端计算?)。
或者,这个问题似乎是一个没有“reduce”的“map”;每行都有自己的计算字段。有没有办法将映射函数的结果作为结果/光标返回?
The new 聚合框架 http://docs.mongodb.org/manual/reference/aggregation/MongoDB 2.2 中允许您通过以下方式添加计算字段$project http://docs.mongodb.org/manual/reference/aggregation/#_S_project操作员。这与以下不太一样随意的函数,因为你需要使用支持的运营商 http://docs.mongodb.org/manual/reference/aggregation/,但它确实提供了很大的灵活性。
这是递增的示例_id
进入一个新的myNum
field:
MongoDB shell version: 2.2.0-rc0
> db.test.insert({_id:123});
> db.test.insert({_id:456});
> db.test.aggregate(
{ $project : {
_id : 1,
'myNum': { $add: [ "$_id", 1]}
}}
)
{
"result" : [
{
"_id" : 123,
"myNum" : 124
},
{
"_id" : 456,
"myNum" : 457
}
],
"ok" : 1
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)