说我有两个文件蒙戈:是能够满足“与”条件对两个文件
/*1*/
{
"id":1,
"name":"natty",
"subject_enrolled":"english"
}
/*2*/
{
"id":2,
"name":"natty",
"subject_enrolled":"science"
}
理想的情况下,它应该是相同的文档,与subject_enrolled是具有这两个问题的阵列。但由于某种原因,我保持我的数据是这样的。 现在,我想写一个查询,它将检索所有已经注册了“英语”和“科学”的学生。
我想下面的查询:
db.students.find({"subject_enrolled":{"$in":["science", "english"]}})
但是,这是错误的,如果堂妹谁注册的唯一的科学任何学生也将在结果中。我不能使用“全部”,因为科学和英语都有两个不同的文档。
有没有办法轻松有效地实现这一点?
由于mongo中没有连接,因此无法直接对其进行查询。如何使用聚合框架?按ID分组,使用$ addToSet添加所有主题,然后使用$ all的匹配阶段? –
@IshanSoni谢谢Ishan给你看。是。我尝试了聚合。我在这里给出了我在下面试过的查询。但我担心表现。有没有其他方法可行? – Nattyk
我想不出有什么办法。等待其他人回应,同时谨防聚合管道的一些限制。 https://docs.mongodb.com/manual/core/aggregation-pipeline-limits/#result-size-restrictions –