Collect.aggregate([
{ $match: { $text: { "$search": "слово" } } },
{ $lookup: {
from: "colors",
let: { id: "$_id" }, // Определяем переменную id для использования внутри $lookup
pipeline: [
{ $match: {
$expr: { $and: [
{ $eq: ["$uid", "$$id"] }, // Сравниваем uid с id из основного документа
{ $gte: ["$rgb.r", 147] }, // Диапазон значений для красного цвета
{ $lte: ["$rgb.r", 167] },
{ $gte: ["$rgb.g", 136] }, // Зеленого
{ $lte: ["$rgb.g", 156] },
{ $gte: ["$rgb.b", 107] }, // Синего
{ $lte: ["$rgb.b", 127] },
{ $lte: ["$prevail", 1] } // Условие для поля prevail
]}
}}
],
as: "colors"
}
},
{ $match: { "colors": { $ne: [] } } }, // Фильтрация документов с ненулевым массивом colors
{ $sort: { "createdAt": -1 } },
{ $limit: 10 }
])
Collect.aggregate([
{ $match: { $text: {"$search": "слово"}} },
{ $lookup: {
from: "colors",
let: { id: "$_id" },
pipeline: [
{ $match:
{ $expr:
{ $and:
[
{ $eq: ["$uid","$$id"] },
{ $eq: ["$color", "red"] }
]
}
}
},
{ $limit: 1 } // Ограничиваем до одного документа, если нам не нужны все цвета
],
as: "colors"
}
},
{ $match: { "colors.0": {$exists: true} } }, // Проверить, что результат не пустой
{ $sort: {createdAt: -1} },
{ $skip:0 },
{ $limit: 10 }
])
curl -v https://localhost:12345/
выдает следущее:curl -v https://localhost:12345/
* Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 12345 (#0)
* schannel: SSL/TLS connection with localhost port 12345 (step 1/3)
* schannel: checking server certificate revocation
* schannel: sending initial handshake data: sending 174 bytes...
* schannel: sent initial handshake data: sent 174 bytes
* schannel: SSL/TLS connection with localhost port 12345 (step 2/3)
* schannel: encrypted data got 1671
* schannel: encrypted data buffer: offset 1671 length 4096
* schannel: SNI or certificate check failed: SEC_E_WRONG_PRINCIPAL (0x80090322) - Главное конечное имя неверно.
* Closing connection 0
* schannel: shutting down SSL/TLS connection with localhost port 12345
* schannel: clear security context handle
curl: (35) schannel: SNI or certificate check failed: SEC_E_WRONG_PRINCIPAL (0x80090322) - Главное конечное имя неверно.
В рамках проекции запроса (то есть во втором аргументе метода findOne, который задаёт, какие поля должны быть возвращены), указание { _id: 0 } означает, что поле _id не должно быть включено в результаты запроса. Значение 0 здесь служит индикатором того, что поле не следует включать в выходные данные.
Вкратце, при использовании { projection: { _id: 0 } } вы говорите MongoDB вернуть все поля документа, кроме _id.