#node.js #mongodb #mongoose
Вопрос:
Это трудно описать, я использую mongodb и метод агрегирования, чтобы получить группу данных списка по 2 полям. Но в некоторых записях есть только 1 в этих 2 полях, и я также хочу включить записи в список.
Пример:
// Aggregate query:
db.collectionA.aggregate([{
$group: {
_id: {
field1: '$field1',
field2: '$field2'
},
$push: {
value: '$value'
}
}
}]);
// Above query result look like
results = [{
_id: { field1: '1', field2: '2', value: [1, 2, 3] },
}]
// I have to push all record have only one field1 = 1 or field2 = 2 to value
results.forEach((result) => {
const moreData = db.collectionA.find({
$or: [{ field1: result._id.field1 }, { field2: result._id.field2 }]
});
result.value.push(moreData);
})
Я ожидаю, что мы сможем обработать последний раздел в той же совокупности запросов. Может ли mongo $подтолкнуть значение результата запроса
db.collectionA.aggregate([{
$group: {
_id: {
field1: '$field1',
field2: '$field2'
},
value: {
db.collectionA.find({ $or: [{ field1: '$_id.field1', field2: '$_id.field2' }]})
}
}
}])
Комментарии:
1. не могли бы вы предоставить примеры данных
2. Вы можете использовать $lookup для поиска этих документов