Я хотел бы выполнить объединение в коллекцию, где имя студента равно в каждой коллекции И ГДЕ последняя строка после "_" в столбце значение журнала равно переменной id is.
Я получил соединение, чтобы работать, но проблема в заявлении о совпадении.Как можно сопоставить подстроку строки в столбце logs в коллекции, к которой я собираюсь присоединиться?
Я могу разбить значение столбца журнала на массив, например так:
{ $split: [ "$studentInfo.log", "_" ]}
Мне просто нужно получить последнее значение после подчеркивания, чтобы соответствовать переменной id
var id = "123";
dbo.collection("student").aggregate([
{ "$lookup": {
"localField": "name",
"from": "data",
"foreignField": "data.studentName",
"as": "studentInfo"
}
}]).toArray(function(err, results) {
console.log(results);
});
Проблема в том, что имя студента не уникально, поэтому по порядкучтобы объединение работало правильно, нам нужно соединиться по имени и убедиться, что символы после подчеркивания совпадают с имеющейся у нас переменной id
коллекция учеников
{
"_id" : ObjectId("(Object ID here"),
"name": "Test"
}
сбор данных
{
"_id" : ObjectId("(Object ID here"),
"studentName": "Test",
"log": "NC_Test_123"
},
{
"_id" : ObjectId("(Object ID here"),
"studentName": "Test",
"log": "FC_Test_444"
}
Мне нужно получить NC_Test_123
, когда переменная, которую я имею для id, равна 123.