gpt4 book ai didi

mongodb - 如何使用带有 Mongo 聚合框架的任意函数添加计算字段?

转载 作者:可可西里 更新时间:2023-11-01 09:10:54 24 4
gpt4 key购买 nike

我正在使用 MongoDB's Aggregate Framework .我的每个文档中都有一个现有字段:

time: Date

我希望基于一个简单的函数创建一个新字段timeBlock:

var dateToTimeBlock = function(dateString, timeBlock){
return new Date(dateString).valueOf() / timeBlock
}

我明白 $group can add fields ,但用于计算这些字段的函数似乎内置于 mongo 中,例如 $avg$add 等。是否可以生成计算基于任意字段的值?

最佳答案

您可以使用聚合框架计算字段。如果你想使用原生 JavaScript 函数(比如 Date 对象上的 valueOf),你将不得不使用 Map-Reduce .

虽然聚合框架不如 Map-Reduce 灵活,但在大多数情况下它会快得多。如果性能至关重要,我会预先计算这些值并改用简单的查询。

如果您想使用聚合,您可以通过将日期转换为整数或在文档中添加一个整数的新字段来简化它。然后您可以使用 $divide 轻松进行计算.

db.coll.aggregate([
{ $project : { dateToTime: { $divide : [ "$timeInt", timeBlock ] }}}
]);

或者如果 timeBlock 是同一文档中的一个字段,您可以这样做:

db.coll.aggregate([
{ $project : { dateToTime: { $divide : [ "$timeInt", "$timeBlock" ] }}}
]);

关于mongodb - 如何使用带有 Mongo 聚合框架的任意函数添加计算字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24264480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com