Một số tài liệu trên DB có trường 'Assunto', tôi muốn đếm số lần xuất hiện các giá trị khác nhau cho 'Assunto' (bỏ qua khi trường không tồn tại, vì vậy tôi đã thực hiện truy vấn này
$result = $collection->aggregate([ [ '$match' => ['Assunto' => ['$nin' => [null]]] ], [ '$sortByCount'=> '$Assunto' ], [ '$sort' => ['Count' => -1] ] ]);Truy vấn hoạt động bình thường, vấn đề của tôi là do trả về từ tổng hợp. Từ tài liệu, nó trả về “Một đối tượng MongoDB\Driver\Cursor hoặc ArrayIterator”
Cũng từ tài liệu typeMap. "Không bắt buộc. Bản đồ loại để áp dụng cho con trỏ, xác định cách tài liệu BSON được chuyển đổi thành giá trị PHP. Mặc định cho bản đồ loại của bộ sưu tập”
Tôi đã đọc các giải pháp trên Stack Overflow về việc thay đổi typeMap của bộ sưu tập để chuyển đổi con trỏ thành một mảng nhưng tôi không thể làm cho chúng hoạt động cho trường hợp của mình, theo hiểu biết của tôi, tôi có nhiều MongoDB\Driver\Cursor và nó chỉ trả về cái đầu tiên
Giải pháp tiếp theo từ Stack Overflow là mã hóa con trỏ thành JSON rồi giải mã nó thành một mảng. Như thế này
//Convert $result, a MongoDB\Driver\Cursor to array() $objects = json_decode(json_encode($result->toArray(),true));Vấn đề là điều này tạo ra một Đối tượng stdClass giống như thế này
Ảnh chụp màn hình (206)987×1252 44. 2KB
Vì vậy, để chuyển đổi stdClass này thành một mảng, tôi cần thực hiện lại mã tương tự. (xin lỗi vì hình ảnh bị mờ, xảy ra sau khi thay đổi kích thước)
//Convert stdClass to Array $array=json_decode(json_encode($objects),true);Ảnh chụp màn hình (207)1012×1243 39 KB
Điều này tạo ra đầu ra dự kiến. Nhưng làm tất cả quá trình này có vẻ như là một sự lãng phí. Cách thích hợp để chuyển đổi các giá trị được trả về từ tổng hợp thành và mảng trong trường hợp của tôi là gì?
Đưa ra một cơ sở dữ liệu chứa một số dữ liệu và nhiệm vụ là liên kết một mảng PHP với nó bằng cách sử dụng toán tử MySQL IN(). Ở đây chúng ta sẽ xem xét một chương trình thực hiện điều cần thiết bằng cách lấy một mảng PHP trong truy vấn và diễn giải nó
Toán tử SQL IN(). Toán tử SQL IN() cho phép bạn chuyển nhiều đối số trong mệnh đề where. Nó thường được sử dụng làm tốc ký cho nhiều câu lệnh OR
cú pháp
SELECT <column_name(s)> FROM <table_name> WHERE <column_name> IN( value1, value2, ...);Hàm nổ PHP (). Chúng ta sẽ sử dụng hàm implode() được xác định trước trong PHP để xử lý mảng. Hàm implode() nối các phần tử mảng bằng một chuỗi. Nó yêu cầu hai tham số để thực hiện cùng một. Đầu tiên là chuỗi sẽ được sử dụng để nối các phần tử mảng cũng có thể được gọi là chuỗi keo. Vì nó sẽ được sử dụng để dán các phần tử lại với nhau. Thứ hai rõ ràng là mảng mà thao tác được yêu cầu thực hiện
cú pháp
string implode(separator, array)Ràng buộc mảng. Theo nhu cầu của chúng tôi, chúng tôi chỉ cần liên kết mảng PHP với mệnh đề IN() và để có được chức năng này, trước tiên chúng tôi cần chuyển đổi mảng đã cho thành dạng được chấp nhận bởi mệnh đề IN(), đây là công việc được thực hiện bởi . Ngoài ra, hãy nhớ rằng bằng cách chuyển mảng của chúng ta tới hàm, chúng ta chỉ chuyển đổi mảng ở dạng được IN() chấp nhận nhưng nó vẫn là cùng một mảng
Chương trình sau đây sẽ giúp bạn hiểu khái niệm này một cách thực tế và kỹ lưỡng hơn
Cơ sở dữ liệu đã sử dụng. Ở đây, chúng ta sẽ sử dụng một cơ sở dữ liệu (tên cơ sở dữ liệu. Geeks) để liên kết một mảng với điều kiện IN() trong PHP
Tên bảng. GFG Tên bảng GFG chứa các thông tin sau
IDNAME1MEGAN2GINA3DARVY4DEBBY5MICHEL6RACHEL7EVA8SAM9ZACK10TIMchương trình 1. Đoạn mã sau lấy mảng ID PHP từ bảng GFG và chuyển nó tới toán tử IN() để lấy tên, tương ứng với ID đã cho
string implode(separator, array)7
string implode(separator, array)8
string implode(separator, array)9
string implode(separator, array)0 string implode(separator, array)1____52string implode(separator, array)0
string implode(separator, array)1 string implode(separator, array)1____43string implode(separator, array)0
string implode(separator, array)5 string implode(separator, array)1____47string implode(separator, array)0
string implode(separator, array)9 string implode(separator, array)1____131string implode(separator, array)0
//Convert $result, a MongoDB\Driver\Cursor to array() $objects = json_decode(json_encode($result->toArray(),true)); 33
//Convert $result, a MongoDB\Driver\Cursor to array() $objects = json_decode(json_encode($result->toArray(),true)); 34
//Convert $result, a MongoDB\Driver\Cursor to array() $objects = json_decode(json_encode($result->toArray(),true)); 35
//Convert $result, a MongoDB\Driver\Cursor to array() $objects = json_decode(json_encode($result->toArray(),true)); 36
//Convert $result, a MongoDB\Driver\Cursor to array() $objects = json_decode(json_encode($result->toArray(),true)); 37 string implode(separator, array)1____139//Convert stdClass to Array $array=json_decode(json_encode($objects),true); 10
//Convert $result, a MongoDB\Driver\Cursor to array() $objects = json_decode(json_encode($result->toArray(),true)); 33
//Convert stdClass to Array $array=json_decode(json_encode($objects),true); 12
//Convert stdClass to Array $array=json_decode(json_encode($objects),true); 13
//Convert stdClass to Array $array=json_decode(json_encode($objects),true); 14 //Convert stdClass to Array $array=json_decode(json_encode($objects),true); 15//Convert stdClass to Array $array=json_decode(json_encode($objects),true); 16//Convert stdClass to Array $array=json_decode(json_encode($objects),true); 17//Convert $result, a MongoDB\Driver\Cursor to array() $objects = json_decode(json_encode($result->toArray(),true)); 37//Convert stdClass to Array $array=json_decode(json_encode($objects),true); 19
//Convert $result, a MongoDB\Driver\Cursor to array() $objects = json_decode(json_encode($result->toArray(),true)); 33
string implode(separator, array)71 string implode(separator, array)1____473 string implode(separator, array)74string implode(separator, array)0string implode(separator, array)76
string implode(separator, array)77string implode(separator, array)1____217string implode(separator, array)5//Convert stdClass to Array $array=json_decode(json_encode($objects),true); 17string implode(separator, array)9//Convert stdClass to Array $array=json_decode(json_encode($objects),true); 19
//Convert $result, a MongoDB\Driver\Cursor to array() $objects = json_decode(json_encode($result->toArray(),true)); 33
string implode(separator, array)85
string implode(separator, array)86 string implode(separator, array)87
_______488____489____490string implode(separator, array)91
//Convert $result, a MongoDB\Driver\Cursor to array() $objects = json_decode(json_encode($result->toArray(),true)); 33
string implode(separator, array)93 string implode(separator, array)1____471string implode(separator, array)96string implode(separator, array)86//Convert stdClass to Array $array=json_decode(json_encode($objects),true); 19
//Convert $result, a MongoDB\Driver\Cursor to array() $objects = json_decode(json_encode($result->toArray(),true)); 33
string implode(separator, array)00string implode(separator, array)01____493string implode(separator, array)03
string implode(separator, array)77string implode(separator, array)05string implode(separator, array)01string implode(separator, array)07 string implode(separator, array)1string implode(separator, array)93string implode(separator, array)10
string implode(separator, array)88string implode(separator, array)12 string implode(separator, array)07_______514string implode(separator, array)15string implode(separator, array)16____517string implode(separator, array)18
string implode(separator, array)19string implode(separator, array)20 string implode(separator, array)21
string implode(separator, array)77string implode(separator, array)12 string implode(separator, array)24string implode(separator, array)0
string implode(separator, array)26
//Convert $result, a MongoDB\Driver\Cursor to array() $objects = json_decode(json_encode($result->toArray(),true)); 33
_______471____529
//Convert $result, a MongoDB\Driver\Cursor to array() $objects = json_decode(json_encode($result->toArray(),true)); 33
string implode(separator, array)01
đầu ra
//Convert $result, a MongoDB\Driver\Cursor to array() $objects = json_decode(json_encode($result->toArray(),true)); 3chương trình 2. Đoạn mã sau sử dụng cùng một bảng thông tin nhưng truy xuất ID tương ứng với các tên được cung cấp trong mảng