I have a query, that use https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/ to "join" two models, after this i use https://docs.mongodb.com/manual/reference/operator/aggregation/project/ to select olny the fields that i need, but my $project brings an arrray of objects (user_detail
) that contains more data that i need. I want only two fields (scheduleStart
and scheduleEnd
) of my result.
My query:
User.aggregate([{
$match: {
storeKey: req.body.store,
}
},
{
$group: { _id: { id: "$_id",
name: "$name", cpf: "$cpf",
phone: "$phone", email: "$email",
birthday: "$birthday", lastName: "$lastname"
},
totalServices: {
$sum: "$services"
},
}
},
{
$lookup: { from: "schedules", localField: "_id.phone", foreignField: "customer.phone", as: "user_detail" } }, { $project: {
_id: 1,
name: 1,
name: 1,
cpf: 1,
phone: 1,
email: 1,
birthday: 1,
totalServices: 1,
totalValue: { $sum : "$user_detail.value" },
count: {
$sum: 1
},
user_detail: 1
}
},
Result of query:
count: 1
totalServices: 0
totalValue: 73
user_detail: Array(2)
0:
...
paymentMethod: 0
paymentValue: "0"
scheduleDate: "2018-10-02"
scheduleEnd: "2018-10-02 08:40"
scheduleStart: "2018-10-02 08:20"
status: 3
store: "5b16cceb56a44e2f6cd0324b"
updated: "2018-11-27T13:30:21.116Z"
1:
...
paymentMethod: 0
paymentValue: "0"
scheduleDate: "2018-11-27"
scheduleEnd: "2018-11-27 00:13"
scheduleStart: "2018-11-27 00:03"
status: 2
store: "5b16cceb56a44e2f6cd0324b"
updated: "2018-11-27T19:33:39.498Z"
_id:
birthday: "1992-03-06"
email: "[email protected]"
id: "5bfed8bd70de7a383855f09e"
name: "Chris Santos G"
phone: "11969109995"
...
Result that i need:
count: 1
totalServices: 0
totalValue: 73
user_detail: Array(2)
0:
scheduleEnd: "2018-10-02 08:40"
scheduleStart: "2018-10-02 08:20"
1:
scheduleEnd: "2018-11-27 00:13"
scheduleStart: "2018-11-27 00:03"
_id:
birthday: "1992-03-06"
email: "[email protected]"
id: "5bfed8bd70de7a383855f09e"
name: "Chris Santos G"
phone: "11969109995"
...
How can i do this with my query?
You can use https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/#lookup-multiple-joins 3.6 syntax to https://docs.mongodb.com/manual/reference/operator/aggregation/project/ the fields inside the https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/#lookup-multiple-joins pipeline
User.aggregate([
{ "$lookup": {
"from": "schedules",
"let": { "id": "$_id.phone" }, "pipeline": [ { "$match": { "$expr": { "$eq": ["$customer.phone", "$$id"] }}},
{ "$project": { "scheduleStart": 1, "scheduleEnd": 1 }}
],
"as": "user_detail"
}}
])
For version of mongo < 3.6 this query should work for you:
User.aggregate([{
$match: { storeKey: req.body.store, } }, { $group: {
_id: {
id: "$_id", name: "$name",
cpf: "$cpf", phone: "$phone",
email: "$email", birthday: "$birthday",
lastName: "$lastname" }, totalServices: { $sum: "$services" }, } }, { $lookup: {
from: "schedules",
localField: "_id.phone",
foreignField: "customer.phone",
as: "user_detail"
}
},
{
$project: { _id: 1, name: 1, name: 1, cpf: 1, phone: 1, email: 1, birthday: 1, totalServices: 1, totalValue: { $sum : "$user_detail.value" }, count: { $sum: 1
},
user_detail: {
scheduleEnd: 1,
scheduleStart: 1,
}
}
},
Jana Duggar foi aberta sobre sua busca pelo amor. Aqui está tudo o que ela disse sobre o assunto e sua janela de cinco anos para o casamento.
O astro de 'Outlander', Sam Heughan, revelou recentemente o que vai levar do set para relembrar Jamie Fraser, o papel que o tornou uma estrela.
'She Loves You' foi escrita em uma hora, gravada em um dia, e foi a música dos Beatles com uma de suas melhores apresentações de sua carreira.
Dolly Parton e sua avó Bessie tiveram um relacionamento especial. Vovó Parton estava muito doente, mas isso não impediu Dolly de pregar uma peça nela.
A carta de tarô Nove de Copas simboliza realização de desejo, satisfação emocional e abundância. Descubra seu profundo significado no amor, carreira e crescimento pessoal.
Ao discutir o clima, a umidade é um tópico constante de conversa e consternação, especialmente durante aqueles meses abafados de verão. Quando as pessoas dizem: "Pelo menos é um calor seco", essa é apenas outra maneira de dizer: "Ufa! Pelo menos não é úmido!"
Explore o simbolismo e o significado da carta de tarô 10 de Paus. Aprenda como isso representa fardos, desafios e a necessidade de aliviar sua carga.
Explore a carta de tarô do Rei de Espadas, um símbolo de intelecto e autoridade. Aprenda seus significados e interpretações para obter orientação perspicaz.
“Children” traz uma participação especial de grande nome e algumas notícias devastadoras
Este RAV4 está em excelentes condições e está preparado para um jogo de cadeiras musicais.
Imagens de drone capturaram bombeiros parecendo lutar para apagar o incêndio.
Eyes of Wakanda está diretamente relacionado ao MCU, além de atualizações sobre X-Men '97, What If..., Demolidor e muito mais.
O anel de noivado de Kate Middleton pertenceu à Princesa Diana antes do Príncipe William pedi-la em casamento. Descubra tudo o que há para saber sobre a peça histórica aqui.
John Cleese se casou com sua esposa, Jennifer Wade, em 2012. Aqui está tudo o que você precisa saber sobre a esposa de John Cleese, Jennifer Wade.
Patton Oswalt se casou com sua esposa, a também atriz Meredith Salenger, em 2017. Aqui está tudo o que você precisa saber sobre a esposa de Patton Oswalt, Meredith Salenger.
Mena Suvari é casada com o marido Michael Hope desde 2018. Aqui está tudo o que você precisa saber sobre o marido de Mena Suvari.
Isso me atinge De repente, como tantas vezes acontece É o meio do caminho tudo de novo <Não, não aquele no Pacífico, seu marrom, aquele no carnaval> Todas as manchetes em voz alta…..
Em 2022, com o lançamento do GPT-3, a habilidade de escrita parece se tornar menos importante. Com a IA, pessoas com redação ruim também podem gerar funcionários de qualidade.
No mundo acelerado e competitivo de hoje, a carreira desempenha um papel significativo no crescimento pessoal, na estabilidade financeira e na satisfação geral com a vida. No entanto, muitos indivíduos encontram-se presos em um ciclo implacável de estagnação e insatisfação, definhando gradualmente em suas vidas profissionais.
Na semana passada, notei um comunicado de imprensa, enviado via PressGazette (um site de notícias da mídia britânica). O artigo anunciava que a Acast, a empresa de publicidade e hospedagem de podcast Scandi, lideraria um consórcio de "provavelmente os editores mais influentes" em podcasting.