Bir koleksiyondaki öğrencilerden ve diğer koleksiyonlardaki notlarım var. (Diğer ayrıntıları elimden) şemaMongodb toplama sorgusu
Öğrenci
{
_id: 1234,
student: {
code: "WUKD984KUK"
}
}
sınıflar
{
_id: 3456,
grade: 24,
studentCode: "WUKD984KUK"
}
her öğrenci için birden fazla sınıf girişleri olabilir benziyor. Öğrenci tablosunda bulunmayan, ancak not tablosunda bulunan toplam öğrenci sayısına ihtiyacım var. Ayrıca, öğrenci masasında olmayan her öğrenci için bir dereceye ihtiyacım var. Aşağıdaki ben yazmıştım sorgu,
var existingStudents = db.students.find({}, {_id: 0, 'student.code': 1});
db.grades.aggregate(
{$match: { 'studentCode': {'$nin': existingStudents}}},
{$group: {_id: '$studentCode', count:{$sum: 1}}},
{$project: {tmp: {code: '$_id', count: '$count'}}},
{$group: {_id: null, total:{$sum:1}, data:{$addToSet: '$tmp'}}}
);
olduğunu Ama maç çalışmıyor sanki bu öğrenci tüm ayrıntıları beni döndürür. Bu sorgunun sadece ilk bölümünü çalıştırdığınızda, ben
{ "student" : { "code" : "A210225504104" } }
olarak öğrenci bilgi almak Hissediyorum ki dönüş değeri iki derin maç isnt çalışma olduğu için. Bunu elde etmenin doğru yolu nedir?
db.students.find ({}, {_ID: 0, 'student.code': 1}) Öğrenci kodlarının size dizi vermez. Bu size studentCodes.So $ nin içeren belgeleri içeren bir dizi belge verir. – mallik