Bạn có thể sử dụng kết hợp $ unwind và $ match với mongo tổng hợp để có được sản lượng mong đợi như:
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"
}
}
})
Nếu bạn muốn đăng ký bỏ qua và giới hạn đến truy vấn trên thì bạn có thể dễ dàng sử dụng nó như:
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"
}
}
})
CHỈNH SỬA :
Nếu bạn đang sử dụng phiên bản php nhỏ hơn 5.4 thì truy vấn sẽ là:
$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);
Nếu bạn đang sử dụng phiên bản PHP lớn hơn 5.3 thì chỉ cần thay thế {
và }
dấu ngoặc nhọn với [
và ]
tương ứng.