MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

mongodb Konversationssystem

Sehen Sie sich diese Seite an, um zu erfahren, wie Sie erweiterte MongoDB-Abfragen durchführen:http://www .mongodb.org/display/DOCS/Advanced+Queries

Sie können eine Kombination aus $and verwenden und $in Operatoren, um zu bekommen, was Sie brauchen. Unter Verwendung der Mongo-Shell würde Ihre Abfrage etwa so aussehen:

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

Ich glaube, dies kann Ihnen auch das Äquivalent geben:

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

Von dort aus müssen Sie das obige in die Sprache/DSL konvertieren, die Sie verwenden, und nach Datum sortieren.

In Ihrem Code benötigen Sie den ($and => array()) nicht Umhüllen Sie alle Objekte, die Sie finden möchten. Entfernen Sie sie, so sieht es so aus:

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