如何根据同一 collection 中特定文档的值计算所有文档中的字段?
How do I calculate a field in all documents based on a value of a particular document in the same collection?
我是 MongoDb 的新手,正在尝试在其中实现一些基本计算。我有collection,计算如下
{ "_id" : 1, "value" : 10}
{ "_id" : 2, "value" : 20}
{ "_id" : 3, "value" : 20}
{ "_id" : 4, "value" : 30}
{ "_id" : 5, "value" : 30}
{ "_id" : 6, "value" : 30}
我想将“_id”:1 的值添加到 collection 中文档的所有值字段,并使用计算结果创建一个新字段。所以我要找的最终结果如下。
{ "_id" : 1, "value" : 10, "sumup":20 }
{ "_id" : 2, "value" : 20, "sumup":30 }
{ "_id" : 3, "value" : 20, "sumup":30 }
{ "_id" : 4, "value" : 30, "sumup":40 }
{ "_id" : 5, "value" : 30, "sumup":40 }
{ "_id" : 6, "value" : 30, "sumup":40 }
您可以在 mongo shell:
中尝试这个
db.collection.aggregate([
{
"$project": {
"value": 1,
"sumup": {
"$add": [ "$value", (db.collection.findOne({"_id": 1})).value ]
}
}
}
])
我是 MongoDb 的新手,正在尝试在其中实现一些基本计算。我有collection,计算如下
{ "_id" : 1, "value" : 10}
{ "_id" : 2, "value" : 20}
{ "_id" : 3, "value" : 20}
{ "_id" : 4, "value" : 30}
{ "_id" : 5, "value" : 30}
{ "_id" : 6, "value" : 30}
我想将“_id”:1 的值添加到 collection 中文档的所有值字段,并使用计算结果创建一个新字段。所以我要找的最终结果如下。
{ "_id" : 1, "value" : 10, "sumup":20 }
{ "_id" : 2, "value" : 20, "sumup":30 }
{ "_id" : 3, "value" : 20, "sumup":30 }
{ "_id" : 4, "value" : 30, "sumup":40 }
{ "_id" : 5, "value" : 30, "sumup":40 }
{ "_id" : 6, "value" : 30, "sumup":40 }
您可以在 mongo shell:
中尝试这个db.collection.aggregate([
{
"$project": {
"value": 1,
"sumup": {
"$add": [ "$value", (db.collection.findOne({"_id": 1})).value ]
}
}
}
])