学生拥有诸如
{"id":"1","name":"Alex"},..
并且有这样的文档
{"course_id":"111","course_name":"React"},..
还有一个名为“学生-课程”的第三个集合,我在那里保存了学生的id和他们相应的课程id。像这样
{"student_id":"1","course_id":"111"}
{
"id": "1",
"name":"Alex",
"taken_courses": [
{"course_id":"111","course_name":"React"},
{"course_id":"112","course_name":"Vue"}
]
}
需要将$loopup与管道一起使用,
student_id
分组,因为我们要获取学生的课程,$push
course_id
中的所有course_id
,以便下一步查找db.StudentCourses.aggregate([
{
$group: {
_id: "$student_id",
course_ids: {
$push: "$course_id"
}
}
},
$查找
学生集合,并在Student
$unwind
student
,因为它是一个数组,我们只需要一个来自同一学生记录组的数组
$project
必填字段
{
$lookup: {
from: "Student",
localField: "_id",
foreignField: "id",
as: "student"
}
},
{
$unwind: "$student"
},
{
$project: {
id: "$_id",
name: "$student.name",
course_ids: 1
}
},
$查找
课程集合,并获取包含course_ids
的所有课程,这些课程是我们在$group 上准备的 $project
必填字段 - 课程详细信息将存储在
taken_courses
中
{
$lookup: {
from: "Course",
let: {
cId: "$course_ids"
},
pipeline: [
{
$match: {
$expr: {
$in: [
"$course_id",
"$$cId"
]
}
}
},
{
$project: {
_id: 0
}
}
],
as: "taken_courses"
}
},
$project
详细信息,已删除非必填字段
{
$project: {
_id: 0,
course_ids: 0
}
}
])
工作操场:https://mongoplayground.net/p/fmzgkykhpee
我正在使用MongoDB,我最终得到了两个集合(无意中)。 第一次收集(样本)有1亿条记录(推文),结构如下: 第二个集合(用户)拥有来自tweet集合的3000万条独特用户记录,看起来是这样的 用户集合中的_id是来自推文集合的user.screen_name,目标是他们的状态(是否作弊用户),最后value.count是我们第一个集合(样本)集合中出现的用户数量(例如捕获的推文数量) 现在我想
问题内容: 假设我有两个类CLassA和CLassB。它们有一个共同的属性,例如每个类拥有的元素数量。 我如何从ClassA和CLassB的对象创建一个集合,并按该属性排序(降序升序无所谓)? 我收集了一个类型,但是当我尝试实现Comparable Interface时,我无法使用该方法(例如,获取返回元素nr的get)。 我有什么解决方案? 谢谢你的帮助! 问题答案: 实际上,如果要将它们放在同
问题内容: 我有一个包含多个文档的mongo集合,假设以下内容(假设出于任何原因,汤姆在2012年都有两名历史老师) 我希望能够查询“汤姆”曾经有过的所有不同的班级,即使汤姆有多个“历史”班级且有多个老师,我只想查询得到最少数量的文档,以便汤姆在所有这些都将显示一次,而“历史记录”只显示一次,而不是查询结果包含重复“历史记录”的多个文档。 我看了一下:http : //mongoengine- o
我有一个画廊的以下文件(Json), 现在我还有一个颜色集合,比如colors-collection:[“黑色”、“黄色”、“红色”、“绿色”、“蓝色”、“粉色”] 我想通过与提供的文本匹配的名称获取绘画,比如“蒙娜丽莎”(作为搜索查询),我还想将两种颜色与colors-collection进行比较,如果colors-collection中有任何匹配的颜色,那么它应该返回绘画<我想要下面这样的东西
以这个结构为例: 我想执行一个查询,首先验证用户()是否等于参考值。如果是,我希望它验证数组()是否包含某个标记。 这是我到目前为止能找到的最接近的东西: 此代码是为在Firebase上部署函数开发的,每当我拥有的某个集合上出现onWrite事件时,它就会触发。 此外,如果有人知道一些关于Firestore的复合查询的好例子,我将不胜感激。我已经阅读了文档,并看到了Firebase团队解释Fire
我需要分离读/写PostgreSQL实例。我有一个写复制副本和几个读复制副本。 QUKUS支持添加多个数据源,但尚不清楚如何让Panache/HiberNate为不同的查询选择合适的数据源。 问:如何配置 Quarkus 以使用不同的数据源进行读/写访问?