Ho una raccolta di utenti, ognuno dei quali può essere abbonato a uno o più servizi. Ogni servizio ha alcuni metadati, incluso il numero di crediti che l'utente ha per quel servizio.jolly di notazione punti Mongodb?
Come posso trovare tutti gli oggetti utente che hanno meno di 50 crediti per qualche servizio se non ho modo di sapere quali saranno le chiavi degli oggetti di servizio?
Concettualmente, sarebbe qualcosa di simile, che non funziona:
db.users.find({services.*.credits : {$lt : 50}})
La collezione utenti:
{
_id: 4f0ea25072139e4d2000001f,
services : {
a : { credits : 100, score : 2000 },
b : { credits : 200, score : 300 },
c : { credits : 10, score : 1300 }
}
},
{
_id: 4f0ea25072139e4d2000001f,
services : {
f : { credits : 68, score : 14 },
q : { credits : 1000, score : 102 },
z : { credits : 59, score : 352 }
}
}
Un altro esempio di quello che voglio fare, nel caso in cui non è chiaro qui, è spiegato qui: http://www.mongodb.org/display/DOCS/Advanced+Queries#comment-346075854
ho finiscono per cambiare il nostro schema di utilizzare solo un array. Avrei potuto usare $ elemMatch, ma dato che avevo solo bisogno di corrispondere su un singolo criterio, ero in grado di fare: 'db.users.find ({services.credits: {$ lt: 50}})' – stuporglue
-1 perché questa non è una risposta alla domanda. Non tutti sono in grado di modificare lo schema dei dati con cui stanno lavorando. Questa domanda rimane senza risposta. – CommaToast
OK, ho risposto io stesso. Ho trovato un modo per farlo. Pubblicato di seguito. – CommaToast