MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

4 cách liệt kê các bộ sưu tập trong cơ sở dữ liệu MongoDB

Khi sử dụng MongoDB, có nhiều cách để liệt kê các bộ sưu tập trong cơ sở dữ liệu.

Dưới đây là bốn cách để lấy danh sách các bộ sưu tập trong cơ sở dữ liệu MongoDB:

  • show collections Lệnh
  • listCollections Lệnh
  • db.getCollectionNames() Phương pháp
  • db.getCollectionInfos() Phương pháp

show collections Lệnh

Nếu bạn đang sử dụng mongo shell, cách nhanh nhất để có được danh sách các bộ sưu tập là sử dụng show collections yêu cầu. Lệnh này truy xuất danh sách các bộ sưu tập và dạng xem trong cơ sở dữ liệu hiện tại.

Ví dụ:

show collections

Kết quả:

 employees
 pets
 pettypes
 products
 system.views 

Trong trường hợp này, có năm kết quả. Chúng ta không thể chỉ bằng cách nhìn vào nó, nhưng pettypes thực sự là một khung nhìn. Những cái khác là bộ sưu tập.

system.views collection là một tập hợp hệ thống chứa thông tin về mỗi dạng xem trong cơ sở dữ liệu.

Các bộ sưu tập thực tế được trả lại sẽ phụ thuộc vào cấp độ truy cập của bạn:

  • Đối với người dùng có quyền truy cập bắt buộc, show collections liệt kê các bộ sưu tập không thuộc hệ thống cho cơ sở dữ liệu.
  • Đối với người dùng không có quyền truy cập cần thiết, show collections chỉ liệt kê các bộ sưu tập mà người dùng có đặc quyền.

listCollections Lệnh

listCollections lệnh quản trị trả về tên và các tùy chọn của bộ sưu tập và dạng xem trong cơ sở dữ liệu. Nó trả về thông tin dưới dạng một tài liệu.

Ví dụ:

db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )

Kết quả:

{
    "cursor" : {
        "id" : NumberLong(0),
        "ns" : "PetHotel.$cmd.listCollections",
        "firstBatch" : [
            {
                "name" : "employees",
                "type" : "collection"
            },
            {
                "name" : "system.views",
                "type" : "collection"
            },
            {
                "name" : "pets",
                "type" : "collection"
            },
            {
                "name" : "products",
                "type" : "collection"
            },
            {
                "name" : "pettypes",
                "type" : "view"
            }
        ]
    },
    "ok" : 1
}

Tài liệu chứa thông tin để tạo con trỏ tới thông tin thu thập.

Lần này, chúng ta có thể xem cái nào là bộ sưu tập và cái nào là chế độ xem.

Chúng ta cũng có thể chạy lệnh như sau:

db.runCommand( { listCollections: 1.0 } )

Làm điều đó cung cấp nhiều thông tin hơn về các bộ sưu tập. Xem db.getCollectionInfos() ví dụ bên dưới để xem dữ liệu được trả về khi chạy nó như vậy (db.getCollectionInfos() phương thức là một trình bao bọc xung quanh listCollections ).

db.getCollectionNames() Phương pháp

db.getCollectionNames() phương thức trả về một mảng chứa tên của tất cả các bộ sưu tập và chế độ xem trong cơ sở dữ liệu hiện tại hoặc nếu đang chạy với điều khiển truy cập, tên của các bộ sưu tập theo đặc quyền của người dùng.

Ví dụ:

db.getCollectionNames()

Kết quả:

 [ "employees", "pets", "pettypes", "products", "system.views" ] 

db.getCollectionInfos() Phương pháp

db.getCollectionInfos() phương thức trả về một mảng tài liệu với thông tin thu thập hoặc chế độ xem, chẳng hạn như tên và tùy chọn, cho cơ sở dữ liệu hiện tại. Kết quả phụ thuộc vào đặc quyền của người dùng.

Dưới đây là một ví dụ về cách gọi nó mà không có bất kỳ đối số nào:

db.getCollectionInfos()

Kết quả:

[
    {
        "name" : "employees",
        "type" : "collection",
        "options" : {
            
        },
        "info" : {
            "readOnly" : false,
            "uuid" : UUID("07e89c25-8842-4331-a1a9-96fe0b4745dc")
        },
        "idIndex" : {
            "v" : 2,
            "key" : {
                "_id" : 1
            },
            "name" : "_id_"
        }
    },
    {
        "name" : "pets",
        "type" : "collection",
        "options" : {
            
        },
        "info" : {
            "readOnly" : false,
            "uuid" : UUID("91d1c6d8-8516-455d-a3c2-b157e1998f8c")
        },
        "idIndex" : {
            "v" : 2,
            "key" : {
                "_id" : 1
            },
            "name" : "_id_"
        }
    },
    {
        "name" : "pettypes",
        "type" : "view",
        "options" : {
            "viewOn" : "pets",
            "pipeline" : [
                {
                    "$project" : {
                        "type" : 1
                    }
                }
            ]
        },
        "info" : {
            "readOnly" : true
        }
    },
    {
        "name" : "products",
        "type" : "collection",
        "options" : {
            "capped" : true,
            "size" : 7500544,
            "max" : 7000
        },
        "info" : {
            "readOnly" : false,
            "uuid" : UUID("cb084959-f374-4f51-bbed-8998c13dcbe2")
        },
        "idIndex" : {
            "v" : 2,
            "key" : {
                "_id" : 1
            },
            "name" : "_id_"
        }
    },
    {
        "name" : "system.views",
        "type" : "collection",
        "options" : {
            
        },
        "info" : {
            "readOnly" : false,
            "uuid" : UUID("3f458338-0678-4d0f-a0cf-eacbd43c8cad")
        },
        "idIndex" : {
            "v" : 2,
            "key" : {
                "_id" : 1
            },
            "name" : "_id_"
        }
    }
]

Định nghĩa của db.getCollectionInfos() thực sự diễn ra như thế này:

db.getCollectionInfos(filter, nameOnly, authorizedCollections)

Vì vậy, chúng tôi có thể sử dụng filter tham số để lọc danh sách các tập hợp dựa trên một biểu thức truy vấn. Điều này có thể được áp dụng cho bất kỳ trường nào được phương thức trả về.

Bạn cũng có thể sử dụng nameOnly để chỉ định rằng phương thức sẽ chỉ trả về tên của các bộ sưu tập và chế độ xem.

authorizedCollections tham số, khi được đặt thành true và được sử dụng với nameOnly: true , cho phép người dùng không có đặc quyền bắt buộc (tức là hành động listCollections trên cơ sở dữ liệu) chạy lệnh khi kiểm soát truy cập được thực thi. Trong trường hợp này, lệnh chỉ trả về những bộ sưu tập mà người dùng có đặc quyền.

Ví dụ về việc sử dụng db.getCollectionInfos() với các thông số sau:

db.getCollectionInfos( {}, true, true )

Kết quả:

[
    {
        "name" : "employees",
        "type" : "collection"
    },
    {
        "name" : "pets",
        "type" : "collection"
    },
    {
        "name" : "pettypes",
        "type" : "view"
    },
    {
        "name" : "products",
        "type" : "collection"
    },
    {
        "name" : "system.views",
        "type" : "collection"
    }
]

Đây là một trong những nơi tôi lọc nó thành một tên cụ thể:

db.getCollectionInfos( { name: "pets" }, true, true )

Kết quả:

 [ { "name" : "pets", "type" : "collection" } ] 

Và đây là những gì sẽ xảy ra khi tôi xóa hai đối số cuối cùng:

db.getCollectionInfos( { name: "pets" } )

Kết quả:

[
    {
        "name" : "pets",
        "type" : "collection",
        "options" : {
            
        },
        "info" : {
            "readOnly" : false,
            "uuid" : UUID("91d1c6d8-8516-455d-a3c2-b157e1998f8c")
        },
        "idIndex" : {
            "v" : 2,
            "key" : {
                "_id" : 1
            },
            "name" : "_id_"
        }
    }
]


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Giao dịch trong MongoDB

  2. Làm cách nào để MongoDB sắp xếp tài liệu của họ trong một bộ sưu tập?

  3. Đối tượng bộ sưu tập không phải là lỗi có thể gọi được với PyMongo

  4. Ghi nhật ký các truy vấn MongoDB với Spring Boot

  5. Quảng cáo các trường con lên cấp cao nhất trong phép chiếu mà không cần liệt kê tất cả các khóa