sql >> Base de Datos >  >> NoSQL >> MongoDB

sistema de conversación mongodb

Eche un vistazo a esta página sobre cómo hacer consultas avanzadas de MongoDB:http://www .mongodb.org/display/DOCS/Advanced+Queries

Puede usar una combinación de $and y $in operadores para obtener lo que necesita. Usando el shell mongo, su consulta se vería así:

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

Creo que esto también puede darte el equivalente:

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

A partir de ahí, es cuestión de convertir lo anterior al idioma/DSL que esté utilizando y ordenar por fecha.

En su código, no necesita el ($and => array()) envolviendo cada uno de los objetos que estás tratando de encontrar. Quítelos, para que se vea así:

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