Trường dự án trong mongodb

Đăng nhập mongodb với tên người dùng và mật khẩu (cơ sở dữ liệu mongo)

  • Tạo Replica Set trong MongoDB, Ví dụ Replica Set MongoDB
  • Replication, Replica Set trong MongoDB là gì?
  • Phân trang trong MongoDB (skip(), limit() phân trang trong MongoDB)
  • Phép chiếu trong MongoDB (trường/cột CHỌN trong MongoDB)

    Sắp xếp trong MongoDB(orderBy, sorting() trong MongoDB)

    Ưu nhược điểm của MongoDB, khi nào nên sử dụng MongoDB

    db.COLLECTION_NAME.find({condition},{field1:1,field2:0,...})

    Delete the column, field, field of collections in MongoDB ($unset)

    • Check tra null, check tồn tại trong MongoDB với $exists
    • Đổi tên trường trong MongoDB với $rename
    • Tạo người dùng/vai trò, phân quyền người dùng trên MongoDB

    Các loại role, vai trò, quyền trong MongoDB

    {'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25},
    {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25},
    {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18},
    {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30},
    {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},

    Đăng nhập mongodb với tên người dùng và mật khẩu (cơ sở dữ liệu mongo) hiển thị tên của tất cả các tài liệu thì câu lệnh sẽ là

    db.player.find({},{'name':1})

    Tạo Replica Set trong MongoDB, Ví dụ Replica Set MongoDB

    SELECT _id, name FROM player

    Replication, Replica Set trong MongoDB là gì?

    Phân trang trong MongoDB (skip(), limit() phân trang trong MongoDB)

    Mặc định, khi truy vấn trong MongoDB (

    db.player.find({'age':25},{'name':1, '_id':0})
    6) kết quả trả về sẽ bao gồm tất cả các trường trong tài liệu. Để giới hạn lượng dữ liệu mà MongoDB gửi tới ứng dụng, bạn có thể sử dụng phép chiếu để chỉ rõ trường nào được trả về, trường nào không được trả về khi truy vấn

    cú pháp

    db.player.find({'age':25},{'name':1, '_id':0})

    Tạo Replica Set trong MongoDB, Ví dụ Replica Set MongoDB

    SELECT name FROM player WHERE age = 25

    Replication, Replica Set trong MongoDB là gì?

    Bảng dưới đây cho thấy mối quan hệ của các thuật ngữ RDBMS với MongoDB

    Hướng dẫn mongodb projection - phép chiếu mongodb

    Một số điều cần cân nhắc khi thiết kế lược đồ trong MongoDB

    • Thiết kế lược đồ dựa trên yêu cầu của người dùng

    • Kết hợp các đối tượng vào một tài liệu nếu bạn sử dụng chúng với nhau. Nếu không thì tách riêng Chắc chắn nó ra (nhưng cần phải chú ý là sau này nó sẽ không tham gia)

    • Sao chép dữ liệu (nhưng có giới hạn) do không gian đĩa quá rẻ nên với tốc độ xử lý

    • tham gia khi viết, không tham gia khi đọc

    • Lược đồ tối ưu cho hầu hết các trường hợp sử dụng thông thường

    • Tập hợp các nhóm phức tạp vào lược đồ

    Ví dụ

    Giả sử là một khách hàng cần DB thiết kế cho blog của anh ta và cân nhắc sự khác biệt giữa lược đồ RDMS và MongoDB. Web will have the following request

    • Mọi bài đăng đều có tiêu đề, mô tả và url duy nhất
    • Mọi bài đăng có thể có 1 hoặc nhiều thẻ
    • Mọi bài đăng đều có tên của nhà xuất bản và số lượng người xem thích
    • Mọi bài đăng đều có nhận xét trả lời một người dùng với tên, thông báo, thời gian dữ liệu và lượt thích
    • Mỗi bài đăng có thể có 0 hoặc nhiều bình luận

    Trong lược đồ thiết kế của RDBMS, chúng ta sẽ có như sau về bài đăng, nhận xét và thẻ

    Hướng dẫn mongodb projection - phép chiếu mongodb

    Trong khi thiết kế lược đồ MongoDB sẽ có một bài đăng bộ sưu tập và có cấu trúc sau

    Trong khi đó ở MongoDB schema, chúng ta sẽ thiết kế một collection post và có cấu trúc như sau

    {
       _id: POST_ID
       title: TITLE_OF_POST,
       description: POST_DESCRIPTION,
       by: POST_BY,
       url: URL_OF_POST,
       tags: [TAG1, TAG2, TAG3],
       likes: TOTAL_LIKES,
       comments: [
          {
             user:'COMMENT_BY',
             message: TEXT,
             dateCreated: DATE_TIME,
             like: LIKES
          },
          {
             user:'COMMENT_BY',
             message: TEXT,
             dateCreated: DATE_TIME,
             like: LIKES
          }
       ]
    }
    

    Để hiển thị 1 bài đăng RDBMS cần phải tham gia 3 bảng trong khi MongoDB chỉ cần lấy ra từ một bộ sưu tập. Nói đến đây nhiều bạn chú ý đừng thần tượng MongoDB quá nhé. Tháng sau mình sẽ viết 1 bài về so sánh hiệu năng với hàng triệu bản ghi giữa MySQL và NoSQL

    MongoDB - Tạo/xóa cơ sở dữ liệu

    Một số lệnh liên quan đến Cơ sở dữ liệu

    ________số 8

    Ví dụ

    >use duongdb
    switched to db duongdb
    

    Kiểm tra đang sử dụng DB nào

    {'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25},
    {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25},
    {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18},
    {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30},
    {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
    0

    hiển thị danh sách các DB trong máy chủ

    {'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25},
    {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25},
    {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18},
    {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30},
    {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
    0

    DB của bạn vừa tạo mới ko có ở đây. bạn phải chèn một tài liệu về nó vào danh sách

    {'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25},
    {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25},
    {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18},
    {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30},
    {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
    1

    Thả DB

    {'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25},
    {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25},
    {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18},
    {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30},
    {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
    2

    MongoDB - Tạo/Xóa bộ sưu tập

    Dưới đây là cú pháp để tạo một Bộ sưu tập

    {'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25},
    {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25},
    {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18},
    {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30},
    {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
    3
    SELECT name FROM player WHERE age = 25
    4 thì will request must be a string. Trong khi mục_______65 đó chứa khá nhiều thông số về. ________ 66,________ 67,________ 68,________ 69.
    SELECT name FROM player WHERE age = 25
    6 là một tập hợp các bộ sưu tập có kích thước cố định và tự động viết tiêu đề lên các mục cũ của nó khi chạm đến kích thước tối đa. Nếu bạn cho nó đúng, thì bạn phải điền
    SELECT name FROM player WHERE age = 25
    8 với lại
    SELECT name FROM player WHERE age = 25
    9
    SELECT name FROM player WHERE age = 25
    7 sẽ tự động tạo một chỉ mục trên biến
    {
       _id: POST_ID
       title: TITLE_OF_POST,
       description: POST_DESCRIPTION,
       by: POST_BY,
       url: URL_OF_POST,
       tags: [TAG1, TAG2, TAG3],
       likes: TOTAL_LIKES,
       comments: [
          {
             user:'COMMENT_BY',
             message: TEXT,
             dateCreated: DATE_TIME,
             like: LIKES
          },
          {
             user:'COMMENT_BY',
             message: TEXT,
             dateCreated: DATE_TIME,
             like: LIKES
          }
       ]
    }
    
    4 Mặc dù giá trị này là sai

    và cú pháp để loại bỏ một bộ sưu tập

    {'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25},
    {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25},
    {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18},
    {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30},
    {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
    4

    Ví dụ nhé

    {'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25},
    {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25},
    {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18},
    {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30},
    {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
    5

    Trong MongoDB, bạn không nhất thiết phải tạo bộ sưu tập. This thing will tự động tạo bộ sưu tập cho bạn khi bạn chèn tài liệu

    {'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25},
    {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25},
    {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18},
    {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30},
    {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
    6

    Đây là ví dụ drop

    {'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25},
    {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25},
    {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18},
    {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30},
    {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
    7

    Data type

    • Chuỗi. Chuỗi trong MongoDB phải là UTF-8 hợp lệ
    • số nguyên. Số nguyên có thể là 32 bit hoặc 64 bit tùy thuộc vào máy chủ của bạn
    • Boolean
    • Gấp đôi
    • Phím tối thiểu/tối đa. Loại này được sử dụng để so sánh giá trị đối với các yếu tố thấp nhất và cao nhất BSON
    • Mảng
    • dấu thời gian
    • Mục tiêu
    • Vô giá trị
    • Biểu tượng
    • Ngày
    • ID đối tượng
    • Dữ liệu nhị phân
    • Mã số
    • Biểu hiện thông thường

    MongoDB - Tài liệu

    Chèn một tài liệu

    {'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25},
    {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25},
    {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18},
    {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30},
    {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
    8

    Ví dụ

    {'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25},
    {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25},
    {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18},
    {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30},
    {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
    9

    Kiểm tra đang sử dụng DB nào

    db.player.find({},{'name':1})
    0

    hiển thị danh sách các DB trong máy chủ

    db.player.find({},{'name':1})
    1

    DB của bạn vừa tạo mới ko có ở đây. bạn phải chèn một tài liệu về nó vào danh sách

    db.player.find({},{'name':1})
    2

    Thả DB

    db.player.find({},{'name':1})
    3

    MongoDB - Tạo/Xóa bộ sưu tập

    db.player.find({},{'name':1})
    4

    Dưới đây là cú pháp để tạo một Bộ sưu tập

    db.player.find({},{'name':1})
    5

    SELECT name FROM player WHERE age = 25
    4 thì yêu cầu phải là một chuỗi. Trong khi mục_______65 đó chứa khá nhiều thông số về. ________ 66,________ 67,________ 68,________ 69

    db.player.find({},{'name':1})
    6
    SELECT name FROM player WHERE age = 25
    6 là một tập hợp các bộ sưu tập có kích thước cố định và tự động viết chủ đề lên các mục cũ của nó khi chạm tới kích thước tối đa. Nếu bạn cho nó đúng, thì bạn phải điền
    SELECT name FROM player WHERE age = 25
    8 với lại
    SELECT name FROM player WHERE age = 25
    9
    db.player.find({},{'name':1})
    7
    SELECT name FROM player WHERE age = 25
    7 sẽ tự động tạo ra một chỉ mục trên biến
    {
       _id: POST_ID
       title: TITLE_OF_POST,
       description: POST_DESCRIPTION,
       by: POST_BY,
       url: URL_OF_POST,
       tags: [TAG1, TAG2, TAG3],
       likes: TOTAL_LIKES,
       comments: [
          {
             user:'COMMENT_BY',
             message: TEXT,
             dateCreated: DATE_TIME,
             like: LIKES
          },
          {
             user:'COMMENT_BY',
             message: TEXT,
             dateCreated: DATE_TIME,
             like: LIKES
          }
       ]
    }
    
    4 Mặc dù giá trị này là sai.
    db.player.find({},{'name':1})
    8

    và cú pháp để loại bỏ một bộ sưu tập

    db.player.find({},{'name':1})
    9

    Ví dụ nhé

    SELECT _id, name FROM player
    0

    Trong MongoDB, bạn không nhất thiết phải tạo bộ sưu tập. This thing will tự động tạo bộ sưu tập cho bạn khi bạn chèn tài liệu

    Đây là ví dụ drop

    SELECT _id, name FROM player
    1

    Data type

    SELECT _id, name FROM player
    2

    Chuỗi. Chuỗi trong MongoDB phải là UTF-8 hợp lệ

    SELECT _id, name FROM player
    3

    số nguyên. Số nguyên có thể là 32 bit hoặc 64 bit tùy thuộc vào máy chủ của bạn

    Boolean

    Gấp đôi

    Phím tối thiểu/tối đa. Loại này được sử dụng để so sánh giá trị đối với các yếu tố thấp nhất và cao nhất BSON

    cú pháp của lệnh tìm kiếm này sẽ là

    SELECT _id, name FROM player
    4

    Ví dụ dữ liệu hiện tại của bạn như sau

    db.player.find({},{'name':1})
    7

    Bạn chỉ cần muốn hiển thị từng tiêu đề thôi. Please do as after

    SELECT _id, name FROM player
    6

    It's menu must ko

    MongoDB - Bản ghi giới hạn

    Để giới hạn số lượng bản ghi trong MongoDB, bạn sẽ sử dụng phương thức limit(). Limit() sẽ chấp nhận số lượng bản ghi giới hạn thông qua đối số mà bạn truyền vào. Nó sẽ hiển thị số lượng tài liệu mà bạn muốn hiển thị

    SELECT _id, name FROM player
    7

    Sử dụng ví dụ ở Projection ở trên chúng ta có ví dụ sau

    SELECT _id, name FROM player
    8

    Ngoài ra, lệnh skip() cho phép bạn bỏ qua 1 giá trị tài liệu

    SELECT _id, name FROM player
    9

    MongoDB - Sắp xếp bản ghi

    Để sắp xếp các tài liệu trong MongoDB, bạn phải sử dụng sort(). sort() cho pehsp một tài liệu trong chứa các trường theo thứ tự thứ tự. có 2 loại thứ tự, 1 sẽ tương đương với tăng dần và -1 sẽ tương đương với giảm dần

    db.player.find({'age':25},{'name':1, '_id':0})
    0

    MongoDB - Lập chỉ mục

    Index hỗ trợ phân tích một cách hiệu quả các truy vấn. Nếu không có mục duy nhất, MongoDB sẽ phải quét tất cả các tài liệu của bộ sưu tập để chọn ra những tài liệu phù hợp với câu hỏi. Quá trình quét này không hiệu quả và yêu cầu MongoDB xử lý một khối dữ liệu lớn

    Chỉ mục là những cấu trúc dữ liệu đặc biệt, được sử dụng để chứa một phần nhỏ của các tập tin dữ liệu một cách dễ dàng để quét. Chỉ số lưu trữ giá trị của một trường cụ thể hoặc thiết lập các trường, sắp xếp theo giá trị của các trường này

    db.player.find({'age':25},{'name':1, '_id':0})
    1

    Để có thể đánh số nhiều trường, bạn hãy sử dụng

    {
       _id: POST_ID
       title: TITLE_OF_POST,
       description: POST_DESCRIPTION,
       by: POST_BY,
       url: URL_OF_POST,
       tags: [TAG1, TAG2, TAG3],
       likes: TOTAL_LIKES,
       comments: [
          {
             user:'COMMENT_BY',
             message: TEXT,
             dateCreated: DATE_TIME,
             like: LIKES
          },
          {
             user:'COMMENT_BY',
             message: TEXT,
             dateCreated: DATE_TIME,
             like: LIKES
          }
       ]
    }
    
    8
    db.player.find({'age':25},{'name':1, '_id':0})
    2

    At here value 1 and -1 is could show the sorting index

    {
       _id: POST_ID
       title: TITLE_OF_POST,
       description: POST_DESCRIPTION,
       by: POST_BY,
       url: URL_OF_POST,
       tags: [TAG1, TAG2, TAG3],
       likes: TOTAL_LIKES,
       comments: [
          {
             user:'COMMENT_BY',
             message: TEXT,
             dateCreated: DATE_TIME,
             like: LIKES
          },
          {
             user:'COMMENT_BY',
             message: TEXT,
             dateCreated: DATE_TIME,
             like: LIKES
          }
       ]
    }
    
    8 có khá nhiều tham số để bạn có thể tùy chỉnh

    MongoDB - Tập hợp

    Tổng hợp xử lý các bản ghi dữ liệu và trả về kết quả tính toán rồi. Tập hợp sẽ nhóm các giá trị từ nhiều tài liệu khác nhau và có thể tiến hành xử lý rất nhiều nhóm dư liệu để trả về một kết quả đơn lẻ. Xử lý này tương đương với đếm(*) trong SQL

    db.player.find({'age':25},{'name':1, '_id':0})
    3

    Ví dụ chúng ta có dữ liệu như thế này

    db.player.find({'age':25},{'name':1, '_id':0})
    4

    Nếu bạn muốn hiển thị có bao nhiêu hướng dẫn được viết bởi mỗi người dùng, bạn sẽ sử dụng

    use DATABASE_NAME
    
    0 like after.
    db.player.find({'age':25},{'name':1, '_id':0})
    5

    Tương ứng với câu truy vấn trong SQL sẽ là

    use DATABASE_NAME
    
    1. Trong ví dụ ở trên, chúng ta đã nhóm các tài liệu chờ trường
    use DATABASE_NAME
    
    2 và sau đó trên mỗi lần xả by_user tổng giá trị được tăng lên

    Khái niệm về PIPELINE

    Trong lệnh shell UNIX, đường dẫn có nghĩa là khả năng thực hiện một xử lý trên một vài đầu vào và sử dụng các đầu ra như đầu vào cho lệnh toeeps theo. MongoDB cũng hỗ trợ khái niệm tương tự trong tập hợp khung. Sẽ có một tập hợp các giai đoạn có thể xảy ra và mỗi giai đoạn được đánh dấu bằng một nhóm tài liệu như đầu vào và tính toán ra kết quả của nhóm tài liệu đó. Kết quả nào có thể sẽ được chuyển thành đầu vào sử dụng cho giai đoạn tiếp theo

    Bài viết sau mình sẽ viết tiếp về những vấn đề nâng cao hơn của MongoDB

    MongoDB - Sao chép

    Bản sao là khái niệm đồng bộ hóa dữ liệu trên nhiều máy chủ. REplication sẽ cung cấp rất nhiều và tăng tính khả dụng của dữ liệu với nhiều bản sao dữ liệu trên nhiều máy chủ DB, các bản sao bảo đảm cho DB khỏi việc mất dữ liệu trên 1 máy chủ đơn lẻ. Bản sao cũng cho phép bạn có thể khôi phục dữ liệu từ ổ cứng bị lỗi và dịch vụ bị lỗi hoặc gặp sự cố. Với rất nhiều bản sao dữ liệu, bạn có thể tinh chỉnh một bản để phục hồi, báo cáo hoặc sao lưu

    In sao lại cần REPLICATION

    • Data data an toàn
    • Tạo tính năng sẵn sàng cho dữ liệu 24/7
    • Khôi phục dữ liệu khỏi lỗi
    • Không có thời gian chết khi xảy ra bảo trì
    • Tăng khả năng đọc dữ liệu
    • Cài đặt bản sao không ảnh hưởng đến ứng dụng

    REPILCATION hoạt động như thế nào trong MongoDB

    MongoDB sao lưu bản sao bằng cách sử dụng bản sao tập hợp. Một bản sao chính của tập tin hơp là một nhóm các ví dụ

    use DATABASE_NAME
    
    3 which has host supply data file chung. Tất cả các trường hợp khác, thứ 2 sẽ được áp dụng xử lý từ trường hợp chính cho nên nó sẽ có tập hợp dữ liệu chung. Bản sao chỉ có một nút chính duy nhất
    • Bản sao là một tập hợp 2 hoặc nhiều nút
    • Trong bản sao tập hợp, một nút là nút chính và phần còn lại là nốt thứ 2
    • Tất cả dữ liệu được sao chép từ nút chính sang nút phụ
    • Tại một thời điểm bất kỳ bảo trì tự động nào, sẽ có một "cuộc bầu cử" được thiết lập lại để chọn ra nút chính mới
    • Sau một lần khôi phục một nút bị lỗi, nó sẽ tham gia lại nhóm bản sao và thực hiện công việc như một ghi chú phụ tiếp theo

    Hướng dẫn mongodb projection - phép chiếu mongodb

    MongoDB - Phân mảnh

    Sharding là quá trình xử lý lưu trữ bản ghi dữ liệu trên nhiều máy và đây là cách tiếp cận của MongoDB để có thể đáp ứng các yêu cầu về dữ liệu lớn. Khi kích thước của dữ liệu tăng lên, một máy tính đơn lẻ không thể đủ để lưu dữ liệu cũng như cung cấp các xử lý đọc và ghi thông thường. Sharding giải bài toán này bằng cách phóng to theo chiều ngang. Với sharding, bạn có thể sẽ bổ sung thêm máy để hỗ trợ lưu trữ dữ liệu cũng như các yêu cầu về đọc và viết