sql >> Databasteknik >  >> NoSQL >> MongoDB

mongodb konversationssystem

Ta en titt på den här sidan om hur du gör avancerade MongoDB-frågor:http://www .mongodb.org/display/DOCS/Advanced+Queries

Du kan använda en kombination av $and och $in operatörer för att få det du behöver. Med mongo-skalet skulle din fråga se ut ungefär så här:

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

Jag tror att detta också kan ge dig motsvarande:

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

Därifrån handlar det om att konvertera ovanstående till det språk/DSL som du använder och sortera efter datum.

I din kod behöver du inte ($and => array()) slå in vart och ett av objekten som du försöker hitta. Ta bort dem så det ser ut så här:

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



  1. Inbäddat dokument utan Array?

  2. Ta bort dubbletter av dokument baserat på fält

  3. MongoDB Aggregation:Hur får man det totala antalet poster?

  4. Felmeddelande från MongoDB Operation `disneys.insertOne()` buffring tog timeout efter 10000ms