MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Ordinamento personalizzato di MongoDB

Se vuoi fare un tale ordinamento, probabilmente vorrai archiviare i tuoi dati in un modo diverso. MongoDB in genere non è così bravo a manipolare i documenti nidificati come i campi di primo livello. Nel tuo caso, consiglierei di suddividere ptime, pt e uid nella loro raccolta:

messaggi

{
    "_id":417,
    "ptime":ISODate("2013-11-26T11:18:42.961Z"),
    "type":"1",
    "txt":"test message"
},  

utenti

{
    "id":417,
    "ptime":ISODate("2013-11-26T11:18:42.961Z"),
    "uid":"52872ed59542f",
    "pt":ISODate("2013-11-26T11:18:42.961Z")
},
{
    "id":417,
    "ptime":ISODate("2013-11-26T11:18:42.961Z"),
    "uid":"524eb460986e4",
    "pt":ISODate("2013-11-26T11:18:42.961Z")
},
{
    "id":417,
    "ptime":ISODate("2013-11-26T11:18:42.961Z"),
    "uid":"524179060781e",
    "pt":ISODate("2013-11-27T12:48:35Z")
}

È quindi possibile impostare un indice sulla raccolta utenti per uid, ptime e pt.

Tuttavia, dovrai eseguire due query per ottenere anche i messaggi di testo stessi.