ho questi 3 richieste:
db.mycollection.count({requestA:{$exists:true}})
db.mycollection.count({requestB:{$exists:true}})
db.mycollection.count({requestC:{$exists:true}})
Mi piacerebbe fare una sola richiesta ... Così ho provato quanto segue:
db.mycollection.aggregate([
{ $group: {
'_id' : { user_id: '$user_id'},
requestA_count: { $sum: {
$cond: [ {requestA:{'$exists':true}}, 1, 0 ]
} },
requestB_count: { $sum: {
$cond: [ {requestB:{'$exists':true}}, 1, 0 ]
} },
requestC_count: { $sum: {
$cond: [ {requestC:{'$exists':true}}, 1, 0 ]
} },
} },
{ $project: {
_id: 0,
user_id: '$_id.user_id',
requestA_count: 1,
requestB_count: 1,
requestC_count: 1
} }
]);
ma ho ottenuto l'errore:
"errmsg" : "exception: invalid operator '$exists'",
Credo che non possiamo usare $ esiste con $ project.
Qualche consiglio su un buon approccio? Grazie
Grazie Neil per la spiegazione! –
In realtà Neil, requestA_count, requestB_count, requestC_count hanno sempre lo stesso valore ...: /! Voglio dire, se requestA_count = 9 quindi requestB_count e requestC_count = 9 –
@JohnSmith puoi modificare la tua domanda per mostrare alcuni dati con campi diversi presenti. Per me questo funziona. Se il campo non esiste, il valore passato alla somma è 0. –