MongoDB动态结果
在SQL中,可以添加不在表模型中的字段,并在查询期间呈现这些字段。MongoDB是否能够在模型和/或查询中执行相同的操作 例如,在示例集合中是否有存储文档的“方法”:MongoDB动态结果,mongodb,Mongodb,在SQL中,可以添加不在表模型中的字段,并在查询期间呈现这些字段。MongoDB是否能够在模型和/或查询中执行相同的操作 例如,在示例集合中是否有存储文档的“方法”: db.example.save( { "name":"randomValue", "random": function(){ return Math.random() }; }) 其中find.example.find()将导致“评估”文档结果,如: {"name":"randomValue", "random":0.98798
db.example.save(
{
"name":"randomValue",
"random": function(){ return Math.random() };
})
其中find.example.find()代码>将导致“评估”文档结果,如:
{"name":"randomValue", "random":0.9879878, "_id" : { "$oid" : "4ef1d1…" }}
(正在求值的函数将被其返回值替换)
如果这仅在指定查询中的函数时可行,那么如何操作?简短的回答是:不,不可能
这种功能是“表示”层的一部分。在ui上显示数据时,通常准备ui模型。在此步骤中,您可以调用任何函数,并从客户机语言扩展您的模型
或者,如果您需要在文档中有一些额外的值(应该由某个函数计算),您可以在保存文档之前调用此函数。例如,在random
字段中保存由Math.random
计算的随机值的shell脚本:
random = Math.random();
db.example.save(
{
"name":"randomValue",
"random": random
})
希望这会有所帮助。目前没有动态计算或将值混合到记录集中的方法
正如您所说,您可以存储函数,但您必须通过迭代每个文档并调用doc.random=db.eval('doc.random')
来计算它们,这将用一个值替换原始函数,而这个值可能不是您想要的
您还可以将函数存储在db.system.js
中,并调用它们以返回修改后的数据集-运行db.eval确实有一些回退,map reduce可能更适合
查看:查看MongoDB。动态:
每次调用find()时都需要一个随机值,或者这只是一个示例来说明您的问题?这是一个示例,在save上设置值非常容易。很高兴看到事情在不断发展。附言:我建议在网站上放一些使用示例。