在集合中使用 $sum - Mongodb
Use of $sum inside set - Mongodb
我有以下问题。
我想在我的 mongodb 数据库中为每个文档创建一个新字段。该字段应包含文档中其他两个字段的总和值。
我试过这个:
db.collection('restaurants').updateMany(
{}, { $set:
{ allScores: {$sum: "$grades.score"} }
}
)
但它不起作用。我收到以下错误:
'allScores.$sum' 中的美元 ($) 前缀字段“$sum”对于存储无效。
为什么我不能在 $set 中使用 $sum?
我能做些什么呢?
我使用的数据库可以在这里找到:https://www.w3resource.com/mongodb-exercises/
谢谢!
茱莉亚
const MongoClient = require('mongodb').MongoClient;
ObjectID = require('mongodb').ObjectID;
// Connection URL
const url = 'mongodb://localhost:27017';
// Database Name
const dbName = 'myproject';
// Use connect method to connect to the server
MongoClient.connect(url, { useNewUrlParser: true }, function(error, client) {
if(error) {
return console.log('An error occured!')
}
console.log("Connected successfully to server");
const db = client.db(dbName);
var objectId = new ObjectID();
db.collection('restaurants').updateMany(
{}, { $set:
{ allScores: {$sum: "$grades.score"} }
}
)
您可以使用 aggregate() with $out 来做到这一点:
db.collection('restaurants').aggregate([
{$addFields : {allScores : {$sum : "$grades.score"}}},
{$out : "restaurants"}
])
此代码的作用:
1-查找restaurants
内的所有文档;
2- 将字段 allScores
添加到每个文档;
3- 将所有文档保存回集合 restaurants
;
我有以下问题。
我想在我的 mongodb 数据库中为每个文档创建一个新字段。该字段应包含文档中其他两个字段的总和值。
我试过这个:
db.collection('restaurants').updateMany(
{}, { $set:
{ allScores: {$sum: "$grades.score"} }
}
)
但它不起作用。我收到以下错误:
'allScores.$sum' 中的美元 ($) 前缀字段“$sum”对于存储无效。
为什么我不能在 $set 中使用 $sum? 我能做些什么呢?
我使用的数据库可以在这里找到:https://www.w3resource.com/mongodb-exercises/
谢谢!
茱莉亚
const MongoClient = require('mongodb').MongoClient;
ObjectID = require('mongodb').ObjectID;
// Connection URL
const url = 'mongodb://localhost:27017';
// Database Name
const dbName = 'myproject';
// Use connect method to connect to the server
MongoClient.connect(url, { useNewUrlParser: true }, function(error, client) {
if(error) {
return console.log('An error occured!')
}
console.log("Connected successfully to server");
const db = client.db(dbName);
var objectId = new ObjectID();
db.collection('restaurants').updateMany(
{}, { $set:
{ allScores: {$sum: "$grades.score"} }
}
)
您可以使用 aggregate() with $out 来做到这一点:
db.collection('restaurants').aggregate([
{$addFields : {allScores : {$sum : "$grades.score"}}},
{$out : "restaurants"}
])
此代码的作用:
1-查找restaurants
内的所有文档;
2- 将字段 allScores
添加到每个文档;
3- 将所有文档保存回集合 restaurants
;