MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

système de conversation mongodb

Consultez cette page pour savoir comment effectuer des requêtes MongoDB avancées :http://www .mongodb.org/display/DOCS/Advanced+Queries

Vous pouvez utiliser une combinaison de $and et $in opérateurs pour obtenir ce dont vous avez besoin. En utilisant le shell mongo, votre requête ressemblerait à ceci :

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

Je pense que cela peut aussi vous donner l'équivalent :

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

À partir de là, il s'agit de convertir ce qui précède dans la langue/DSL que vous utilisez et de trier par date.

Dans votre code, vous n'avez pas besoin du ($and => array()) enveloppant chacun des objets que vous essayez de trouver. Supprimez-les, de sorte qu'il ressemble à ceci :

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