mongodb - 我们可以使用 mongodb 将对象值推送到 $project 中吗
问题描述
db.setting.aggregate([
{
$match: {
status: true,
deleted_at: 0,
_id: {
$in: [
ObjectId("5c4ee7eea4affa32face874b"),
ObjectId("5ebf891245aa27c290672325")
]
}
}
},
{
$lookup: {
from: "site",
localField: "_id",
foreignField: "admin_id",
as: "data"
}
},
{
$project: {
name: 1,
status: 1,
price: 1,
currency: 1,
numberOfRecord: {
$size: "$data"
}
}
},
{
$sort: {
numberOfRecord: 1
}
}
])
如何使用项目将货币推入价格对象请指导非常感谢,也很想知道 $addtoSet 和 $push 之间有什么区别,从项目中选择它或从 $addField 修复它有什么好的选择
https://mongoplayground.net/p/RiWnnRtksb4
输出应该是这样的:
[
{
"_id": ObjectId("5ebf891245aa27c290672325"),
"currency": "USD",
"name": "Menz",
"numberOfRecord": 0,
"price": {
"numberDecimal": "20",
"currency": "USD",
},
"status": true
},
{
"_id": ObjectId("5c4ee7eea4affa32face874b"),
"currency": "USD",
"name": "Dave",
"numberOfRecord": 2,
"price": {
"numberDecimal": "10",
"currency": "USD"
},
"status": true
}
]
解决方案
您可以直接将字段插入到对象中project
,如下所示(字段price
):
$project: {
name: 1,
status: 1,
price: {
numberDecimal: "$price.numberDecimal",
currency: "$currency"
},
numberOfRecord: {
$size: "$data"
}
}
通过使用项目进行操作,无需使用$addField
.
对于和之间的区别$addToSet
,$push
请阅读这个很好的答案。
推荐阅读
- facebook-graph-api - django,如何在 Facebook 照片上标记人
- java - Hibernate @ColumnTransformer 如何设置用户定义的键
- python - 如何将标头 api 保存在全局
- python - RuntimeError: 4 维权重 96 3 11 11 的预期 4 维输入,但得到了大小为 [30, 50176] 的 2 维输入
- c# - 有没有办法将图像作为参数从 c# 发送到 python 脚本?
- html - CSS:在图像上添加徽章以查看在线/离线状态
- python - 将大字符串写入文件时出现 Python 内存错误(来源为 XML/minidom)
- python - 如何对有关系的矩阵进行分组
- docker - 如何在 Docker 容器镜像中创建 tun 接口?
- javascript - 在javascript中上传拖动的图像?