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

sistema di conversazione mongodb

Dai un'occhiata a questa pagina su come eseguire query MongoDB avanzate:http://www.mongodb.org/display/DOCS/Advanced+Queries">http://www.mongodb.org/display/DOCS/Advanced+Queries">http://www.mongodb.org/display/DOCS/Advanced+Queries .mongodb.org/display/DOCS/Advanced+Query

Puoi usare una combinazione di $and e $in operatori per ottenere ciò di cui hai bisogno. Usando la mongo shell, la tua query sarebbe simile a questa:

db.yourCollectionName.find({$and: {from: {$in: ["toUser", "loggedOnUser"]}}, {to: {$in: ["toUser", "loggedOnUser"]}}})

Credo che questo possa anche darti l'equivalente:

db.yourCollectionName.find({$and: {$or: [{from: "toUser"}, {to: "toUser"}]}}, {$or: [{from: "loggedOnUser"}, {to: "loggedOnUser"}]}}})

Da lì si tratta di convertire quanto sopra nella lingua/DSL che stai utilizzando e ordinare per data.

Nel tuo codice, non hai bisogno di ($and => array()) avvolgendo ciascuno degli oggetti che stai cercando di trovare. Rimuovili, in modo che assomigli a questo:

$cursor = $collection->find(
    array('$or' => 
        array(
            array("from"=>"$profile", "to"=>"$loggeduser"),
            array("to"=>"$profile", "from"=>"$loggeduser")
        )
    )
) ->limit(50)->sort(array('date' => -1));