MongoDB-减法
基本上,我想减去每个对象的“完成开始”。MongoDB-减法,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,基本上,我想减去每个对象的“完成开始”。 因此,在下面的示例中,输出应该是2和4((7-5=2)和(8-4=4)),然后我想将这两个字段添加到现有文档中 我如何在MongoDB中做到这一点 { "title" : "The Hobbit", "rating_average" : "???", "ratings" : [ { "title" : "best book ever", "start" : 5,
因此,在下面的示例中,输出应该是2和4((7-5=2)和(8-4=4)),然后我想将这两个字段添加到现有文档中 我如何在MongoDB中做到这一点
{
"title" : "The Hobbit",
"rating_average" : "???",
"ratings" : [
{
"title" : "best book ever",
"start" : 5,
"finish" : 7
},
{
"title" : "good book",
"start" : 4,
"finish" : 8
}
]
}
不确定查询输出的具体要求是什么,但这可能会有所帮助 查询:
db.books.aggregate([
{ $unwind: "$ratings" },
{ $addFields: { "ratings.diff": { $subtract: [ "$ratings.finish", "$ratings.start" ] } } }
])
管道说明:
db.books.aggregate([
{ $unwind: "$ratings" },
{ $addFields: { "ratings.diff": { $subtract: [ "$ratings.finish", "$ratings.start" ] } } }
])
db.books.aggregate([
{ $unwind: "$ratings" },
{ $addFields: { "ratings.diff": { $subtract: [ "$ratings.finish", "$ratings.start" ] } } }
])
OP要求将结果存储在同一子文档中。在与朋友和家人讨论后,我发现这是可能的,但只有MongoDB版本4.2或更高版本才有可能。下面是一个update语句,它可以实现所需的结果。这是一个更新,不是聚合
更新:(特定于MongoDB 4.2或更高版本)
这看起来不错,但如何将其保存到我的文档中?(在我现有的document@user12487929-为了澄清,您想从文档中的两个字段计算一个值,然后更新文档以包含此计算值?是的,我想计算(减去)文档中两个字段的值,然后更新文档以包含此计算值。您能找到任何解决方案吗?@user12487929-我仍在研究中。这个基本用例似乎很难解决。