gpt4 book ai didi

javascript - 在文档中查找、更新和返回数组对象 (mongodb)

转载 作者:可可西里 更新时间:2023-11-01 10:38:47 25 4
gpt4 key购买 nike

我有一堆文件,格式如下:

{
_id: "5b38c85f213751038ff4d0bb",
classes: [
{
_id: "5b38c85f21375103ytg65ju7",
standard: "12",
numberOfStudents: 45
},
{
_id: "5b38c85f2137510370987hgd",
standard: "11",
numberOfStudents: 51
},
]
}

我想:

  1. _id 和特定类的 _id 搜索文档集合。
  2. 更新该类(class)的 numberOfStudents
  3. 只返回类对象。

因此对于 _id: "5b38c85f213751038ff4d0bb" & classes._id: "5b38c85f21375103ytg65ju7",更新 numberOfStudents: 43 结果我是期待是:

{
_id: "5b38c85f21375103ytg65ju7",
standard: "12",
numberOfStudents: 43
}

我尝试了一些方法,但它们都返回了整个文档,但不是我想要的样子。

最佳答案

你可以试试下面的聚合

db.collection.aggregate([
{ "$match": { "_id": "5b38c85f213751038ff4d0bb" }},
{ "$addFields": {
"classes": {
"$filter": {
"input": "$classes",
"as": "class",
"cond": {
"$eq": [
"$$class._id",
"5b38c85f21375103ytg65ju7"
]
}
}
}
}},
{ "$unwind": "$classes" },
{ "$replaceRoot": { "newRoot": "$classes" }},
{ "$project": {
"_id": 1,
"numberOfStudents": { "$literal": 43 },
"standard": 1
}}
])

输出

[
{
"_id": "5b38c85f21375103ytg65ju7",
"numberOfStudents": 43,
"standard": "12"
}
]

试一试 here

关于javascript - 在文档中查找、更新和返回数组对象 (mongodb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51130891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com