在sql中,可以添加不在表模型中的字段,并在查询期间呈现这些字段。MongoDB是否能够在模型和/或查询中执行相同的操作?
例如,是否有“方法”将文档存储在示例集合中:

db.example.save(
{
"name":"randomValue",
"random": function(){ return Math.random() };
})

其中find.example.find();将导致“评估”文档结果,如:
{"name":"randomValue", "random":0.9879878, "_id" : { "$oid" : "4ef1d1…" }}

(正在计算的函数将被其返回值替换)
如果这只在指定查询中的函数时可行,如何执行?

最佳答案

目前没有动态计算或混合记录集值的方法。
正如您所说,您可以存储函数,但您必须通过遍历每个文档并调用doc.random=db.eval('doc.random')来计算它们,这将用一个值替换原始函数——这可能不是您想要的。
您还可以将函数存储在db.system.js中并调用它们以返回修改后的数据集-运行db.eval确实有一些回调,map reduce可能更适合。
退房:http://www.mongodb.org/display/DOCS/Server-side+Code+Execution

关于mongodb - MongoDB动态结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8590209/

10-12 12:35
查看更多