gpt4 book ai didi

javascript - 更新所有文档,设置一个值等于数组的值,其中索引取自另一个值(MongoDB)

转载 作者:行者123 更新时间:2023-11-30 06:11:40 25 4
gpt4 key购买 nike

我正在尝试对 MongoDB 中的 80k 文档集合执行 mongo Shell 命令。

这是一个示例文档:

{ 
"weights":[
{
"amount":100,
"description":"grams",
"grams":100
},
{
"amount":1,
"description":"cup",
"grams":258
},
{
"amount":1,
"description":"tbsp",
"grams":16
},
{
"amount":1,
"description":"tsp",
"grams":5.38
}
],
"default_units":2,
"nutrition":{
"calories":598,
"carbs":22.31,
"fats":51.36,
"proteins":22.21,
},
"serving_calories":95,
"serving_carbs":3,
"serving_fats":8,
"serving_proteins":2,
}

我想做的是遍历集合中的每个文档并将“serving_calories”字段更新为如下所示:

serving_calories = doc.nutrition.calories * (doc.weights[doc.default_units].grams / 100);

因此正确执行此操作将使 serving_calories = 598 * (16/100) = 95.68

我无法找到正确的命令来根据需要从另一个值执行数组索引。执行正确的 mongo 命令是什么?

最佳答案

我想我在执行脚本之前没有选择正确的数据库。无论如何,这是我的脚本:

db.foods.find().forEach(function(doc) {
db.foods.updateOne({ _id: doc._id },{ $set: {
serving_calories: doc.nutrition.calories * (doc.weights[doc.default_units].grams / 100)
} } );
});

关于javascript - 更新所有文档,设置一个值等于数组的值,其中索引取自另一个值(MongoDB),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58556138/

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