आप $unwind के संयोजन का उपयोग कर सकते हैं और $match मोंगो के साथ एकत्रीकरण अपेक्षित आउटपुट प्राप्त करने के लिए जैसे:
db.collection.aggregate({
$match: {
"_id": "3691149613248" // you can skip this condition if not required
}
}, {
$unwind: "$following"
}, {
$match: {
"following.content_id": {
$regex: /^369/
}
}
}, {
$group: {
_id: "$_id",
"following": {
$push: "$following"
}
}
})
अगर आप लागू करना चाहते हैं छोड़ें और limit उपरोक्त क्वेरी के लिए तो आप इसे आसानी से उपयोग कर सकते हैं जैसे:
db.collection.aggregate({
$match: {
"_id": "3691149613248" //use this if you want to filter out by _id
}
}, {
$unwind: "$following"
}, {
$match: {
"following.content_id": {
$regex: /^369/
}
}
}, {
$skip: 4 // you can set offset here
}, {
$limit: 3 // you can set limit here
}, {
$group: {
_id: "$_id",
"following": {
$push: "$following"
}
}
})
संपादित करें :
यदि आप 5.4 से कम PHP संस्करण का उपयोग कर रहे हैं तो क्वेरी इस प्रकार होगी:
$search = "369";
$criteria = array(array("$match" => array("_id" => "3691149613248")),
array("$unwind" => "$following"),
array("$match" => array("following.content_id" => array("$regex" => new MongoRegex("/^$search/")))),
array("$skip" => 4), array("$limit" => 3),
array("$group" => array("_id" => "$_id", "following" => array("$push" => "$following"))));
$collection - > aggregate($criteria);
यदि आप 5.3 से अधिक PHP संस्करण का उपयोग कर रहे हैं तो बस {
. को बदलें और }
[
. के साथ ब्रेसिज़ और ]
क्रमशः।