本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
$let
Amazon DocumentDB 中的$let运算符用于将变量绑定到值并在表达式中使用这些变量。它允许您定义局部变量,这些变量可以在聚合管道的同一阶段的后续表达式中使用。
参数
-
vars:定义要在表达式中使用的变量的对象。
-
in:使用 vars 参数中定义的变量的表达式。
示例(MongoDB 外壳)
此示例演示如何使用运$let算符来计算矩形的面积。
创建示例文档
db.shapes.insertMany([
{ name: "Rectangle 1", length: 5, width: 3 },
{ name: "Rectangle 2", length: 7, width: 4 },
{ name: "Rectangle 3", length: 6, width: 2 }
]);
查询示例
db.shapes.aggregate([
{
$project: {
name: 1,
area: {
$let: {
vars: {
length: "$length",
width: "$width"
},
in: {
$multiply: ["$$length", "$$width"]
}
}
}
}
}
])
输出
[
{
"_id": ObjectId("6161e5b1a3eba3c7f2960d03"),
"name": "Rectangle 1",
"area": 15
},
{
"_id": ObjectId("6161e5b1a3eba3c7f2960d04"),
"name": "Rectangle 2",
"area": 28
},
{
"_id": ObjectId("6161e5b1a3eba3c7f2960d05"),
"name": "Rectangle 3",
"area": 12
}
]
代码示例
要查看使用该$let命令的代码示例,请选择要使用的语言的选项卡:
- Node.js
-
const { MongoClient } = require('mongodb');
async function calculateRectangleAreas() {
const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
const db = client.db('test');
const collection = db.collection('shapes');
const result = await shapes.aggregate([
{
$project: {
name: 1,
area: {
$let: {
vars: {
length: '$length',
width: '$width'
},
in: {
$multiply: ['$$length', '$$width']
}
}
}
}
}
]).toArray();
console.log(result);
client.close();
}
calculateRectangleAreas();
- Python
-
from pymongo import MongoClient
def calculate_rectangle_areas():
client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
db = client.test
collection = db.shapes
result = list(shapes.aggregate([
{
'$project': {
'name': 1,
'area': {
'$let': {
'vars': {
'length': '$length',
'width': '$width'
},
'in': {
'$multiply': ['$$length', '$$width']
}
}
}
}
}
]))
print(result)
client.close()
calculate_rectangle_areas()