添加字段到mongodb集合中的所有文档



我正在node js项目上工作,我有一个mongodb的订单集合,我想在每个文档中添加一个字段,问题是我想传递一个函数作为这个新字段的值,函数的参数是文档的另外两个字段,这是一个例子,会让你理解。我的收藏:

[
{  
_id:"eyxwapfhiezfe664ec",
orderPrice : 20,
createdAt :  2021-01-15T17:16:25.844Z
endedAt : 2021-01-15T17:20:25.844Z

}
{
_id:"eyxwlcfeojrfeoc",
orderPrice : 50,
createdAt :  2021-01-15T17:16:25.844Z
endedAt : 2021-01-15T17:20:25.844Z

}
{
_id:"eyxwapfhiseflflpsssc",
orderPrice : 20, 
createdAt :  2021-01-15T17:16:25.844Z
endedAt : 2021-01-15T17:20:25.844Z
}

我想添加的字段是completedTime,这是createdAt和enddat之间的差异,我有一个函数differenceBetweenDates,它需要两个日期作为参数createdAt和结束于,但我不知道如何将这个函数传递到更新中的$set。所以为了更清楚,我想把这个字段添加到每个文档:

CompletedTime: differenceBetweenDates(createdAt, endedAt)

谢谢。

如果你使用的是MongoDB 4.2,你可以传递聚合表达式作为更新的一部分。

db.collection.updateMany({},[{ $set:{ CompletedTime: {$subtract:["$endedAt", "$createdAt" ]}}}])

在MongoDB 4.4中,你也可以使用一个带有$merge阶段的聚合管道来将结果集合并回原始集合:

db.collection.aggregate([
{ $set: { CompletedTime: {$subtract:["$endedAt", "$createdAt" ]}}},
{ $merge: "collection" }
])

相关内容

  • 没有找到相关文章

最新更新