mongodb - 如何使用 mongoDB 中的聚合查询使用 findOneAndUpdate?
问题描述
我使用nestJS 作为与MongoDB 连接的后端。我能够访问我的架构中的嵌套数组,即:
{
"id": "productId",
"name": "productName",
"price": "productPrice",
"Categories": [
{
"_id": "catId",
"name": "catName",
"Subcategories": [
{
"_id": "subcatId",
"name": "subcatName"
},
{
"_id": "subcatId",
"name": "subcatName"
},
]
},
{
"_id": "catId",
"name": "catName",
"Subcategories": [
{
"_id": "subcatId",
"name": "subcatName"
},
{
"_id": "subcatId",
"name": "subcatName"
},
]
}
]
}
]
我可以通过以下方式访问类别和子类别:
db.collection.aggregate([
{
$match: {
"id": "productId"
}
},
{
$unwind: "$Categories"
},
{
$project: {
"_id": "$Categories._id",
"name": "$Categories.name"
}
}
])
db.collection.aggregate([
{
$match: {
"id": "productId"
}
},
{
$unwind: "$Categories"
},
{
$match: {
"Categories._id": "catId"
}
},
{
$unwind: "$Categories.Subcategories"
},
{
$project: {
_id: "$Categories.Subcategories._id",
name: "$Categories.Subcategories.name"
}
}
])
我现在面临的问题是如何使用 findOneAndUpdate 方法更新类别或子类别。
我将如何访问正确的类别/子类别 _id 进行更新?
提前致谢。
解决方案
您可以像这样更新类别数据,
您可以使用更新中的条件更新与您的条件匹配的精确.$
参考
db.collection.findOneAndUpdate({
'id':"productId",
'Categories._id':"catId1"
},{
$set:{
'Categories.$.name':"catName7"
}
},{
new:true
})
我必须检查 SubCategory 的两个级别,我会检查并发布相同的延迟
推荐阅读
- python - 对于python,如何将变量传递给JSON?
- r - 基于向量中指定的列表在 R 中设置数据帧(使用“开头为”表达式或等效项)
- angular - 使用 Angular 重新连接到现有的 SignalR (.NET CORE) 套接字
- google-apps-script - 显示提示后,LockService 锁不会持续存在
- python - make_links_absolute() 导致绝对 URL 损坏
- java - 如何在Java中的同一线程上异步执行方法?
- c - 计算递归冒泡排序算法中的迭代次数
- python - python如何对像{'a b':c,'d e':f ....}这样的变量进行排序
- spring-integration - 从线性链中的先前流中获取消息的方法
- docker - 多个 Dockerfile