MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

система за разговори mongodb

Разгледайте тази страница за това как да правите разширени MongoDB заявки:http://www .mongodb.org/display/DOCS/Advanced+Queries

Можете да използвате комбинация от $and и $in оператори, за да получите това, от което се нуждаете. Използвайки mongo shell, вашата заявка ще изглежда по следния начин:

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

Вярвам, че това също може да ви даде еквивалента:

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

Оттам нататък е въпрос на конвертиране на горното в езика/DSL, който използвате, и сортиране по дата.

Във вашия код нямате нужда от ($and => array()) опаковане на всеки от обектите, които се опитвате да намерите. Премахнете ги, така че да изглежда така:

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. премахване на обект от вложен масив от обекти mongodb

  2. Получаване на ObjectIdHex стойност от mgo заявка

  3. използване на akka потоци за преминаване през колекцията на mongo

  4. Spring data и mongodb - просто връщане назад с пружина в @Transactional

  5. Операциите на Монго гладуват