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

MySQL sang MongoDB - Trang tính lừa đảo quản trị viên

Hầu hết các ứng dụng phần mềm ngày nay đều liên quan đến một số lưu trữ dữ liệu động để tham khảo rộng rãi trong tương lai trong chính ứng dụng đó. Tất cả chúng ta đều biết dữ liệu được lưu trữ trong cơ sở dữ liệu được chia thành hai loại:DBMS quan hệ và không quan hệ.

Lựa chọn của bạn trong số hai lựa chọn này sẽ hoàn toàn phụ thuộc vào cấu trúc dữ liệu, lượng dữ liệu liên quan, hiệu suất cơ sở dữ liệu và khả năng mở rộng.

DBMS quan hệ lưu trữ dữ liệu trong bảng dưới dạng hàng để chúng sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL), làm cho chúng trở thành lựa chọn tốt cho các ứng dụng liên quan đến một số giao dịch. Chúng bao gồm MySQL, SQLite và PostgreSQL.

Mặt khác, NoSQL DBMS như MongoDB hướng đến tài liệu để dữ liệu được lưu trữ trong các bộ sưu tập dưới dạng tài liệu. Điều này mang lại dung lượng lưu trữ lớn hơn cho một bộ dữ liệu lớn do đó có lợi thế hơn nữa về khả năng mở rộng.

Trong blog này, chúng tôi giả định rằng bạn có kiến ​​thức tốt hơn về MongoDB hoặc MySQL và do đó muốn biết mối tương quan giữa cả hai về mặt truy vấn và cấu trúc cơ sở dữ liệu.

Dưới đây là bảng gian lận để bạn làm quen thêm với việc truy vấn MySQL tới MongoDB.

MySQL to MongoDB Cheat Sheet - Điều khoản

Điều khoản MySQL Điều khoản MongoDB Giải thích
Bảng Bộ sưu tập Đây là vùng chứa dữ liệu có xu hướng giống nhau trong các đối tượng được chứa.
Hàng Tài liệu Xác định một thực thể đối tượng trong bảng cho MySQL và tập hợp trong trường hợp MongoDB.
Cột Trường Đối với mỗi mục được lưu trữ, nó có các thuộc tính được xác định bởi các giá trị và kiểu dữ liệu khác nhau. Trong MongoDB, các tài liệu trong cùng một bộ sưu tập, có thể có các trường khác nhau. Trong MySQL, mọi hàng phải được xác định với cùng các cột từ những hàng hiện có.
Khóa chính Khóa chính Mọi đối tượng được lưu trữ được xác định bằng một giá trị trường duy nhất trong trường hợp MongoDB, chúng tôi có trường _id được đặt tự động trong khi trong MySQL, bạn có thể xác định khóa chính của riêng mình, khóa này tăng dần khi bạn tạo các hàng mới.
Bảng tham gia Nhúng và liên kết tài liệu Kết nối được liên kết với một đối tượng trong một bộ sưu tập / bảng khác với dữ liệu trong một bộ sưu tập / bảng khác.
ở đâu $ match Chọn dữ liệu phù hợp với tiêu chí.
nhóm $ group Nhóm dữ liệu theo một số tiêu chí.
thả $ unset Xóa cột / trường khỏi hàng / tài liệu /
bộ $ set Đặt giá trị của cột / trường hiện có thành giá trị mới.
Vài người trở thành MongoDB DBA - Đưa MongoDB vào Sản xuất Tìm hiểu về những điều bạn cần biết để triển khai, giám sát, quản lý và mở rộng MongoDBDownload miễn phí

Tuyên bố lược đồ

Câu lệnh bảng MySQL Tuyên bố thu thập MongoDB Giải thích

Cơ sở dữ liệu và bảng được tạo rõ ràng thông qua bảng quản trị PHP hoặc được định nghĩa trong một tập lệnh, tức là

Tạo cơ sở dữ liệu

CREATE DATABASE database_name

Tạo bảng

CREATE TABLE users (
    id MEDIUMINT NOT NULL
        AUTO_INCREMENT,
    UserId Varchar(30),
    Age Number,
    Gender char(1),
    Name VarChar(222),
    PRIMARY KEY (id)
)

Cơ sở dữ liệu có thể được tạo ngầm định hoặc rõ ràng. Trong khi chèn tài liệu đầu tiên, cơ sở dữ liệu và bộ sưu tập được tạo ngầm cũng như trường _id tự động được thêm vào tài liệu này.

db.users.insert( {
    UserId: "user1",
    Age: 55,
    Name: "Berry Hellington",
    Gender: "F",
 } )

Bạn cũng có thể tạo cơ sở dữ liệu một cách rõ ràng bằng cách chạy nhận xét này trong Mongo Shell

db.createCollection("users")

Trong MySQL, bạn phải chỉ định các cột trong bảng mà bạn đang tạo cũng như thiết lập một số quy tắc xác thực như trong ví dụ này, loại dữ liệu và độ dài đi đến một cột cụ thể. Trong trường hợp của MongoDB, không nhất thiết phải xác định các trường mà mỗi tài liệu nên giữ cũng như các quy tắc xác thực mà các trường được chỉ định nên giữ.

Tuy nhiên, trong MongoDB để đảm bảo tính toàn vẹn và nhất quán của dữ liệu, bạn có thể đặt các quy tắc xác thực bằng cách sử dụng JSON SCHEMA VALIDATOR

Bỏ bàn

Người dùng
DROP TABLE users
db.users.drop()

Đây là các câu lệnh để xóa một bảng cho MySQL và bộ sưu tập trong trường hợp MongoDB.

Thêm một cột mới có tên là join_date

ALTER TABLE users ADD join_date DATETIME

Xóa cột ngày tham gia nếu đã được xác định

ALTER TABLE users DROP COLUMN join_date DATETIME

Thêm một trường mới có tên là join_date

db.users.updateMany({},{$set:{‘join_date’: new Date()})

Thao tác này sẽ cập nhật tất cả các tài liệu trong bộ sưu tập để có ngày tham gia là ngày hiện tại.

Xóa trường join_date nếu đã được xác định

db.users.updateMany({},{$unset:{‘join_date’: “”})

Thao tác này sẽ xóa trường join_date khỏi tất cả các tài liệu thu thập.

Thay đổi cấu trúc của lược đồ bằng cách thêm hoặc bớt một cột / trường.

Vì kiến ​​trúc MongoDB không thực thi nghiêm ngặt cấu trúc tài liệu nên các tài liệu có thể có các trường khác nhau.

Tạo chỉ mục với cột UserId tăng dần và Age giảm dần

CREATE INDEX idx_UserId_asc_Age_desc
ON users(UserId)

Tạo chỉ mục liên quan đến các trường UserId và Age.

db.users.ensureIndex( { UserId: 1, Age: -1 } )

Các chỉ số thường được tạo để tạo thuận lợi cho quá trình truy vấn.

INSERT INTO users(UserId,
                  Age,
                  Gender)
VALUES ("user1",
        25,
        "M")
db.users.insert( {
       UserId: "bcd001",
       Age: 25,
       Gender: "M",
     Name: "Berry Hellington",
} )

Chèn bản ghi mới.

DELETE FROM users
WHERE Age = 25
db.users.deleteMany( { Age = 25 } )

Xóa các bản ghi khỏi bảng / bộ sưu tập có tuổi bằng 25.

DELETE FROM users
db.users.deleteMany({})

Xóa tất cả các bản ghi khỏi bảng / bộ sưu tập.

SELECT * FROM users
db.users.find()

Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng với tất cả các cột / trường.

SELECT id, Age, Gender FROM users
db.users.find(
   { },
   { Age: 1, Gender: 1 }
)

Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng với các cột / trường Tuổi, Giới tính và khóa chính.

SELECT  Age, Gender FROM users
db.users.find(
   { },
 { Age: 1, Gender: 1,_id: 0}
)

Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng với các cột / trường Tuổi và Giới tính. Khóa chính bị bỏ qua.

SELECT * FROM users WHERE Gender = “M”
db.users.find({ Gender: "M"})

Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng có giá trị Giới tính được đặt thành M.

SELECT Gender FROM users WHERE Age = 25
db.users.find({ Age: 25}, { _id: 0, Gender: 1})

Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng chỉ có giá trị Giới tính nhưng có giá trị Tuổi bằng 25.

SELECT * FROM users WHERE Age = 25 AND Gender = ‘F’
db.users.find({ Age: 25, Gender: "F"})

Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng có giá trị Giới tính được đặt thành F và Tuổi là 25.

SELECT * FROM users WHERE  Age != 25
db.users.find({ Age:{$ne: 25}})

Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng có giá trị Tuổi không bằng 25.

SELECT * FROM users WHERE Age = 25 OR Gender = ‘F’
db.users.find({$or:[{Age: 25, Gender: "F"}]})

Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng có giá trị Giới tính được đặt thành F hoặc Tuổi là 25.

SELECT * FROM users WHERE Age > 25
db.users.find({ Age:{$gt: 25}})

Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng có giá trị Độ tuổi lớn hơn 25.

SELECT * FROM users WHERE Age <= 25
db.users.find({ Age:{$lte: 25}})

Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng có giá trị Tuổi nhỏ hơn hoặc bằng 25.

SELECT Name FROM users WHERE Name like "He%"
db.users.find(
  { Name: /He/ }
)

Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng có giá trị Tên có các chữ cái He.

SELECT * FROM users WHERE Gender = ‘F’ ORDER BY id ASC
db.users.find( { Gender: "F" } ).sort( { $natural: 1 } )

Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng có giá trị Giới tính được đặt thành F và sắp xếp kết quả này theo thứ tự tăng dần của cột id trong trường hợp MySQL và thời gian được chèn trong trường hợp MongoDB.

SELECT * FROM users WHERE Gender = ‘F’ ORDER BY id DESC
db.users.find( { Gender: "F" } ).sort( { $natural: -1 } )

Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng có giá trị Giới tính được đặt thành F và sắp xếp kết quả này theo thứ tự giảm dần của cột id trong trường hợp MySQL và thời gian được chèn trong trường hợp MongoDB.

SELECT COUNT(*) FROM users
db.users.count()

hoặc

db.users.find().count()

Đếm tất cả các bản ghi trong bảng / bộ sưu tập người dùng.

SELECT COUNT(Name) FROM users
db.users.count({Name:{ $exists: true }})

hoặc

db.users.find({Name:{ $exists: true }}).count()

Đếm tất cả các bản ghi trong bảng / bộ sưu tập người dùng có giá trị cho thuộc tính Name.

SELECT * FROM users LIMIT 1
db.users.findOne()

hoặc

db.users.find().limit(1)

Trả về bản ghi đầu tiên trong bảng / bộ sưu tập người dùng.

SELECT * FROM users WHERE Gender = ‘F’ LIMIT 1
db.users.find( { Gender: "F" } ).limit(1)

Trả về bản ghi đầu tiên trong bảng / bộ sưu tập người dùng có giá trị Giới tính bằng F.

SELECT * FROM users LIMIT 5 SKIP 10
db.users.find().limit(5).skip(10)

Trả về năm bản ghi trong bảng / bộ sưu tập người dùng sau khi bỏ qua năm bản ghi đầu tiên.

UPDATE users SET Age = 26 WHERE age > 25
db.users.updateMany(
  { age: { $gt: 25 } },
  { $set: { Age: 26 } }
)

Điều này đặt độ tuổi của tất cả các bản ghi trong bảng / bộ sưu tập người dùng có độ tuổi lớn hơn 25 đến 26.

UPDATE users SET age = age + 1
db.users.updateMany(
  {} ,
  { $inc: { age: 1 } }
)

Điều này làm tăng tuổi của tất cả các bản ghi trong bảng / bộ sưu tập người dùng lên 1.

UPDATE users SET age = age - 1
WHERE id = 1
db.users.updateMany(
  {} ,
  { $inc: { age: -1 } }
)

Điều này làm giảm tuổi của bản ghi đầu tiên trong bảng / bộ sưu tập người dùng xuống 1.

Để quản lý MySQL và / hoặc MongoDB một cách tập trung và từ một điểm duy nhất, hãy truy cập:https://severalnines.com/product/clustercontrol.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Các bước cài đặt MongoDB trên Amazon Linux

  2. MongoDB $ abs

  3. Làm thế nào để so sánh dữ liệu Morphia, Mongo4j và Spring cho MongoDB?

  4. Lombok - java.lang.StackOverflowError:null trên phương thức toString

  5. cách cấu trúc một chỉ mục phức hợp trong mongodb