MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

sistema de conversação mongodb


Dê uma olhada nesta página sobre como fazer consultas avançadas do MongoDB:http://www .mongodb.org/display/DOCS/Advanced+Queries

Você pode usar uma combinação de $and e $in operadores para obter o que você precisa. Usando o shell do mongo, sua consulta ficaria assim:
db.yourCollectionName.find({$and: {from: {$in: ["toUser", "loggedOnUser"]}}, {to: {$in: ["toUser", "loggedOnUser"]}}})

Eu acredito que isso também pode lhe dar o equivalente:
db.yourCollectionName.find({$and: {$or: [{from: "toUser"}, {to: "toUser"}]}}, {$or: [{from: "loggedOnUser"}, {to: "loggedOnUser"}]}}})

A partir daí, é uma questão de converter o acima para o idioma/DSL que você está usando e classificar por data.

Em seu código, você não precisa do ($and => array()) envolvendo cada um dos objetos que você está tentando encontrar. Remova-os, para que fique assim:
$cursor = $collection->find(
    array('$or' => 
        array(
            array("from"=>"$profile", "to"=>"$loggeduser"),
            array("to"=>"$profile", "from"=>"$loggeduser")
        )
    )
) ->limit(50)->sort(array('date' => -1));