我想知道是否有可能通过在选项块或其他东西中包含一个函数来利用MongoDB查询中的函数。
假设我的数据库集合有一个文档:
{"year": "2320"}
我有函数来格式化这个文档的年份字段:
const reformat = function(input){
return input.year.substring(2,4)+input.year.substring(0,2)
}
我将调用一个fetch函数,如下所示:
const test = {"year": "2023"}
fetchSomething(test, {}, reformat)
我的fetch函数如下所示:
async function fetchSomething(query, projection, options){
const dat = await mongoCli.db("testDB").collection("testCollection").findOne(query, projection, options);
return dat;
}
因此,reformat-function应该修改数据库的文档以匹配test变量的year属性,而不是相反。
我不确定MongoDB是否支持它。查看MongoDB文档...
2条答案
按热度按时间eyh26e7m1#
你能做的就是这样:
option
是findOne
的输入属性,不能重新定义。或者,您可以在聚合管道中使用$function:
请注意,在聚合表达式内执行JavaScript可能会降低性能。仅当提供的管道运算符无法满足应用程序的需要时,才使用
$function
运算符。$substrCP和$concat也可用作管道运算符。lb3vh1jj2#
我现在意识到我可以用一个光标来完成它:
不过,也许有更好的办法。