sql >> Databáze >  >> NoSQL >> MongoDB

konverzační systém mongodb

Podívejte se na tuto stránku o tom, jak provádět pokročilé dotazy MongoDB:http://www .mongodb.org/display/DOCS/Advanced+Queries

Můžete použít kombinaci $and a $in operátory, abyste získali to, co potřebujete. Pomocí mongo shell by váš dotaz vypadal asi takto:

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

Věřím, že vám to může také poskytnout ekvivalent:

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

Odtud jde o převod výše uvedeného na jazyk/DSL, který používáte, a řazení podle data.

Ve svém kódu nepotřebujete ($and => array()) obalením každého z objektů, které se snažíte najít. Odstraňte je, takže to vypadá takto:

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



  1. jak používat mikroslužbu nestjs redis?

  2. Nastavte výchozí datum při vkládání dokumentu s polem time.Time

  3. Vizualizace topologie vašeho clusteru v ClusterControl

  4. Jsou data vrácená z Mongoose neměnná?