gpt4 book ai didi

mongodb - Mongodb - 如何根据数组中元素的存在创建动态字段?

转载 作者:行者123 更新时间:2023-12-04 10:41:53 24 4
gpt4 key购买 nike

我在 Mongo 中有一个问题,我没有得到任何有效解决它的线索。

假设我有一个类似这样的“类(class)”集合(索引是在“studentIds”字段上创建的):

{
"courseId": 1,
"name": "Mathematics",
"studentIds": [1,3,5]
...
...
}
{
"courseId": 2,
"name": "Physics",
"studentIds": [2,3,5]
...
...
}

我正在尝试编写一个查询,它将以以下格式返回记录:

假设学生 1 正在查询类(class),他注册了 courseId 1,因此“已注册”为真,但学生 1 未注册为 courseId 2,因此“已注册”为假:
{
"courseId": 1,
"name": "Mathematics",
"enrolled": true
}
{
"courseId": 2,
"name": "Physics",
"enrolled": false
}

我能想到的唯一解决方案是有两个查询,第一个查询找到学生注册的所有类(class) ID,在第二个查询中通过光标运行时,根据 courseId 的存在添加“已注册”字段第一个查询的结果,但正在寻找一种在单个查询中实现此目的的方法。

谢谢。

最佳答案

您只需要 $in运算符(operator):

let studentId = 1;
db.collection.aggregate([
{
$project: {
courseId: 1,
name: 1,
enrolled: { $in: [ studentId, "$studentIds" ] }
}
}
])

Mongo Playground

关于mongodb - Mongodb - 如何根据数组中元素的存在创建动态字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59898491/

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