Ho una collezione unitScores, in cui ogni documento ha un id e una serie di documenti come questo:
"_id": ObjectId("52134edd5b1c2bb503000001"),
"scores": [
{
"userId": ObjectId("5212bf3869bf351223000002"),
"unitId": ObjectId("521160695483658217000001"),
"score": 33
},
{
"unitId": ObjectId("521160695483658217000001"),
"userId": ObjectId("5200f6e4006292d308000008"),
"score": 17
}
]
Ho due domande: trovare
_id:new ObjectID(scoreId)
"scores.userId":new ObjectID(userId)
"scores.unitId":new ObjectID(unitId)
e
_id:new ObjectID(scoreId)
scores:
$elemMatch:
userId:new ObjectID(userId)
unitId:new ObjectID(unitId)
mi aspetterei loro di dare lo stesso risultato, ma utilizzando l'ID utente di input e di UNITID
userId: 5212bf3869bf351223000002
unitId: 521160695483658217000001
la versione notazione restituisce la voce errata array (quella con punteggio: 17) e il $ elemMatch restituisce la voce corretta (quella con punteggio: 33). Perché?
È possibile includere il documento effettivo che si sta passando nella query o il codice Java (simile a) che si sta utilizzando per costruire la query? Sembra che dovrebbero entrambi funzionare. – Mason