इस पृष्ठ पर एक नज़र डालें कि कैसे उन्नत MongoDB प्रश्न करें:http://www .mongodb.org/display/DOCS/Advanced+Queries
आप $and
. के संयोजन का उपयोग कर सकते हैं और $in
आपको जो चाहिए वह प्राप्त करने के लिए ऑपरेटरों। मोंगो शेल का उपयोग करते हुए, आपकी क्वेरी कुछ इस तरह दिखाई देगी:
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"}]}}})
वहां से उपरोक्त को उस भाषा/डीएसएल में परिवर्तित करने की बात है जिसका आप उपयोग कर रहे हैं, और तिथि के अनुसार क्रमित कर रहे हैं।
आपके कोड में, आपको ($and => array())
. की आवश्यकता नहीं है प्रत्येक ऑब्जेक्ट को लपेटना जिसे आप खोजने का प्रयास कर रहे हैं। उन्हें हटा दें, तो यह इस तरह दिखता है:
$cursor = $collection->find(
array('$or' =>
array(
array("from"=>"$profile", "to"=>"$loggeduser"),
array("to"=>"$profile", "from"=>"$loggeduser")
)
)
) ->limit(50)->sort(array('date' => -1));