sql >> Database >  >> NoSQL >> MongoDB

mongodb-gesprekssysteem

Bekijk deze pagina over het uitvoeren van geavanceerde MongoDB-query's:http://www .mongodb.org/display/DOCS/Advanced+Queries

U kunt een combinatie van de $and . gebruiken en $in operators om te krijgen wat je nodig hebt. Als u de mongo-shell gebruikt, ziet uw vraag er ongeveer zo uit:

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

Ik denk dat dit je ook het equivalent kan opleveren:

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

Van daaruit is het een kwestie van het bovenstaande omzetten naar de taal/DSL die je gebruikt en sorteren op datum.

In je code heb je de ($and => array()) niet nodig het inpakken van elk van de objecten die u probeert te vinden. Verwijder ze, zodat het er zo uitziet:

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



  1. Bulk upsert in MongoDB met behulp van mangoest

  2. Controleren of een waarde al in een lijst bestaat Redis

  3. Schakel een booleaanse waarde in met mongoDB

  4. Wat is het verschil tussen MongoDB Atlas en MongoDB Atlas voor AWS?