Я изучаю mongodb и nodejs, и я только что обнаружил трудность при загрузке данных, чей "id" никогда не упоминался в "old_id" данных, следующих за ним.
Например, для коллекция ниже:
{
"title": "example_001",
"data": [[{
"id": "001",
"old_id": "null"
}
]]
}{
"title": "example_002",
"data": [[{
"id": "002",
"old_id": "null"
}
]]
}{
"title": "example_003",
"data": [[{
"id": "003",
"old_id": "002"
}
]]
}{
"title": "example_004",
"data": [[{
"id": "004",
"old_id": "null"
}
]]
}{
"title": "example_005",
"data": [[{
"id": "005",
"old_id": "001"
}
]]
}
ожидаемый результат:
{
"title": "example_003",
"data": [[{
"id": "003",
"old_id": "002"
}
]]
}{
"title": "example_004",
"data": [[{
"id": "004",
"old_id": "null"
}
]]
}{
"title": "example_005",
"data": [[{
"id": "005",
"old_id": "001"
}
]]
}
Я не знаю, как я могу указать фильтр, который позволяет мне возвращать результаты выше, этот фильтр будет хранится в переменной и вставляется в скрипт ниже:
//let old_filter = {"$and": [{data: {$elemMatch: {$elemMatch: {$eq: ["last_id","null" ] }}}}] };
let filter = ??? ;
db.collection("mycollection").find(filter, { _id: 0 }).toArray(function(error, results) {
try{
if (error) throw error;
console.log(results.length);
return resolve(results);
}finally{
db.close();
}
});
Спасибо за вашу помощь.