LỜI NÓI ĐẦU Tài liệu này được tạo ra bởi yêu cầu của lớp SE121.L21, Truong Đại học Công nghệ Thông tin, Đại học Quốc gia Thành phố Hồ Chí Minh, học kỳ II năm học 2020 Báo cáo này bao gôm
Trang 1
ĐẠI HỌC QUOC GIA THÀNH PHÓ HÒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CONG NGHE PHAN MEM
Z
ĐỎ ÁN 1 MẠNG XÃ HỘI PHOTOME DÀNH CHO THỢ
CHỤP ẢNH VÀ NGƯỜI CÓ NHU CẢU CHỤP
ANH, MAU ANH
Giảng viên hướng dẫn: TH.S NGUYÊN CÔNG HOAN thực hiện: HÀ NHẬT LINH-—
PHAM VU LE MINH -
p Hé Chi Minh, Thang 7 nam 2021
Trang 2LỜI NÓI ĐẦU
Tài liệu này được tạo ra bởi yêu cầu của lớp SE121.L21, Truong Đại học Công nghệ Thông tin, Đại học Quốc gia Thành phố Hồ Chí Minh, học kỳ II năm học 2020
Báo cáo này bao gôm các thông tin từ việc khảo sát và tham khảo các nên tảng
mạng xã hội, các tài liệu thiết kê và đặc tả của phân mẽm mạng xã hội bao gôm các sơ đô case, các thực hiện cơ sở dữ liệu, giao diện
Cách đọc tài liệu: Nội dung tài liệu được đưa vào các mục, và được đánh sô thứ tự
từ trên xuông, chi tiết xem thêm tại mục lục
Chúng em cảm ơn thầy Nguyễn Công Hoan đã hỗ trợ và hướng dẫn để nhóm có
thể hoàn thành tốt đồ án.
Trang 3NHAN XET CUA GIANG VIEN HUONG DAN
vives ngdy thang ndm 2021
Người nhận xét (Ký tên và ghi rõ họ tên
Trang 6Man hinh dang ky
Man hinh dang nha
Màn hinh trang cá nhân ngườ
E
Trang 7GIỚI THIỆU BÀI TOÁN CẢN GIẢI QUYẾT, MÔ TẢ QUY TRÌNH THỰC
HIỆN CÁC CÔNG VIỆC CHÍNH
a a é
1 Xay dung mét mang x4 hdi cho tho chụp anh, mẫu anh và người có nhụ cầu chụp
ảnh
F]_ Xác định đối tượng hướng đến:
Người dùng: Thợ chụp ảnh, mẫu ảnh, người sở hữu mẫu ảnh, người có nhu cầu chụp ảnh, người có niềm đam mê với nhiếp ảnh
F]_ Mục đích: Tạo ra một môi trường nhiếp ảnh hiện đại Ở đó mọi người có thể tập
chung vào nhiếp ảnh Tạo điều kiện thuận lợi nhất để mọi ngudi có thể tìm kiếm cơ
hội của mình, liên lạc và cộng tác cùng nhau thông qua mạng xã hội Photome Đồng thời Photome cũng là một mạng xã hội hình ảnh dùng để giải trí hướng đến những người yêu thích chụp ảnh
F]_ Hình thức phát triển: App mobile
Ol Công nghệ sử dụng:
ự ¢
Hiện tại các hoạt động chụp ảnh, nhiếp ảnh đều là các hình thức tự phát, không có
sự gắn kết giữa những người yêu thích với nhau lại thành một cộng đồng lớn Hay nếu có gắn kết thông qua một mạng xã hội lớn nào khác, thì các hoạt động nhiếp anh sé bi pha bởi tính chất mạng xã hội đa phương tiện Những người dùng yêu chụp ảnh và có nhu cầu về chụp ảnh khó có thể sàng lọc các đối tượng trên những trang mạng xã hội lớn
Có một số ứng dụng mạng xã hội cho nhiếp ảnh gia đã được phát triển, nhằm tạo không gian cho những người yêu thích chụp ảnh Tuy nhiên những ứng dụng này chỉ dừng lại ở việc chia sẻ ảnh và tạo sự gắn kết giữa cộng đồng người chụp ảnh, chứ chưa tạo được
sự phân hóa và nhu câu của những thực thê trong mạng xã hội
Trang 8Nắm bắt được yêu cầu đó Những người dùng cần có những bức ảnh đẹp Chụp ảnh không chỉ là để vui mà nó còn là một nghề nghiệp Tạo thêm nhiều công việc cho những mẫu ảnh bán chuyên và chuyên nghiệp Cũng như tạo được không gian nhiếp ảnh lành mạnh Chúng em đã thông nhất chọn đề tài Photome mạng xã hội cho thợ chụp ánh, mẫu ảnh và người có nhu cầu chụp ảnh
App được xây dựng bao gồm các nội dung cơ bản:
E] Tạo tài khoản cá nhân, proñle cho cá nhân đề giới thiệu bản thân (như CV) F]_ Up các bài đăng của mình(Ảnh và các status trạng thái)
F]_ Tương tác (like , comment ) với các bài viết của người khác
O Tìm kiếm những người dùng khác nhằm liên lac hay follow
F]_ Xem thông báo những người đã thực hiện tương tác với bài viết của mình F]_ Xem các bài viết, đăng ngẫu nhiên trong trang home và từ đó nhận biết được những bài viết, người dùng cần để ý
Các bước xây dựng App mo
F]_ Xác định yêu cầu, mô hình hoá
¡ Thiết kế hệ thống
Ll Thiết kế dữ liệu
F]_ Thiết kế giao diện
LÌ Lập trình
ï] Thử nghiệm và sửa lỗi
LI Phát hành app, bao tri
Trang 9Với sự trợ giúp của React Native, lập trình viên (developer) có thế sử dụng JavaScript
dé tao ra mobile apps (tng dung di động) hỗ tro cho ca nén tang Android va iOS
Instagram, Facebook, Skype, la nhimg img dung ndi bat str dung React Native
React native có thê không nhanh như các ứng dụng gốc thực sự được xây dựng bằng
các ngôn ngữ quen thuộc như Java, ObJecfIve nhiên, bạn sẽ có được hiệu suất
gần như ngôn ngữ đấy vì nó cung cấp cho bạn các thành phần góc, Chế độ xem và Văn bản Ứng dụng dành cho thiết bị di động dựa trên React Native không phải là ứng dụng web HTML5, hybrid hoặc di động Thay vào đó, nó là một ứng dụng di động thực sự
Bạn có thể nâng hiệu suất ứng dụng React Native của mình lên một tầm cao mới bằng
cách tối ưu hóa ứng dụng của bạn bằng mã gốc Có, React Native cũng cho phép bạn sử dụng
mã góc Đề có hiệu suất tôi đa, bạn có thể xây dựng mội số tính năng trong ứng dụng của mình bằng mã góc và một số tính năng với React Native
ện ngườ React Native cho phép bạn tạo các UI độc đáo, bắt mắt thông qua các thành phần khai báo được xây dựng sẵn, chăng hạn như Picker, Nút, Thanh trượt, Chuyên đổi, v.v Bạn cũng
có thê tạo các thành phần của riêng bạn với TouchableNativeFeedback và TouchableOpacity
Có nhiều thành phần dành riêng cho iOS và Android có sẵn để giúp thiết bị hoạt động hiệu
quả trên điện thoại di động Android và 1
Vi dụ:
Thanh công cụ Android, View Page Android, v.v
Trang 10Ê ứ ụ React Native cung cap cho bạn các thành phần cho văn bản, hình ảnh, đầu vào bản
phím, danh sách có thê cuộn, thanh tiễn trình, hình động, bảng tạm, liên kết, v.v Các thành
han nay tăng tốc đáng kể quá trình phát triển ứng dụng và tính năng Tải lại nóng cũng giúp bạn tiết kiệm rất nhiều thời gian vì nó cho phép bạn tải lại ứng dụng của mình mà không cần
biên dịch lại toàn bộ mã
Phản ứng thư viện bản địa như Redux (để xử lý trạng thái ứng dụng của bạn) và Phản ứng tuyệt vời bản địa (danh sách các thành phần và bản trình diễn) cũng sẽ giúp bạn hoàn thành công việc phát triển ứng dụng di động của mình nhanh hơn
Công cụ phát triển như Hạt nhân để viết mã, Yoga đề xây dựng bồ trí, Lính gác đề theo dõi lỗi và sự có, và Công cụ phát triển React để gỡ lỗi làm cho quá trình phát trién React Native dễ dàng hơn và nhanh hơn rất nhiều Các công cụ React Native tuyệt vời khác bao gồm
Mã VS, Đốt cháy, Hội chợ triển lãm, và Bugsnag
< View ScrollView ¬—_ Z““
Imageview Welcome to React <——
> Step One I
See Your Changes | |
Trang 11dựng các ứng dụng đa nên tảng Nhưng hãy nhớ rằng bạn vẫn cần thực hiện một số điều chỉnh dành riêng cho nền tảng
Hơn 2.000 người đóng gớp với hơn 85.000 ngdi sao trén GitHub
Các công ty như Callstack, Biệt thự phần mềm, Microsoft, và Màu đỏ vô hạn đã đóng góp cho khuôn khô này Ban sẽ tìm thấy rất nhiều thành phần và thư viện React Native được tạo bởi cộng đồng các nhà phát triển trên các trang web như Mã thông báo và Thư mục gốc Nhận trợ giúp về StackOverflow, Reddit hoặc là Bộ giải mã Bạn luôn luôn tìm người giúp bạn Bạn cũng có thể nhận được sự giúp đỡ từ Cộng đồng bất hòa Reactiflux, các Phản ứng nhóm Facebook gốc, và Phản ứng cộng đồng Spectrum bản địa
x
é 9
Các tài liệu chính thức thân thiện với người mới bắt đầu và có ví dụ mã Bên cạnh các
Trang 12tài liệu chính thức, bạn cũng có thể thử các cách sau để có được thực hành
é
ến trúc cũ
Thực chất, React Native là một giải pháp platform agnostic (không phụ thuộc nền tảng) Trong phạm vi này, mục tiêu chính của ữamework là cho phép các developer viết code bằng Javascript với ReactJS trong khi ở bên dưới React Native sử dụng các cơ chế riêng của
nó đề biên dịch các React Element dé phía hệ điều hành có thể hiêu được Điều nay co nghĩa
Hiển thị chính xác giao diện người dùng
Khả năng truy cập đến các thành phần native của hệ điều hành
Thông thường, đôi với hệ điều hành Android/iOS, cơ chế hoạt động sẽ như sau:
THE FULL ARCHITECTURE
Có 3 luồng chạy song song và riêng biệt trong mỗi ứng dung React Native:
e JS thread: 1a noi tat cá code Javascript được đọc và biên dịch, nơi xử hầu hết các
logic nghiệp vụ của ứng dụng Metro sẽ đóng gói tat cả code Javascript thành một file duy nhất Phần code này sẽ được chuyển tới công cụ JavascriptCore (JSC) để có thê
chạy được
Trang 13e Native thread: là nơi xử lý code native Nó giao tiếp với JS Thread bất cứ khi nào có nhu cầu cần thay đổi UI hoặc truy cập các hàm native Chúng ta có thê chia Native Thread thành Native UI và Native Modules Tất cá các Native Modules đều được khởi động khi chúng ta sử dụng ứng dụng Điều đó có nghĩa là module Bluetooth sẽ luôn luôn ở trạng thái kích hoạt bởi React Native kế cả khi không có nhu cầu sử dụng
® Shadow Thread: là nơi các layout sẽ được tính toán Nó str dung Layout Engine riêng của Facebook được gọi là Yoga nhằm tính toán flexbox layout, sau đó gửi kết quả về
Dé giao tiếp giữa JS thread và Native thread chúng ta sẽ sử dụng một Bridge Phía bên dưới, Module C++ này hầu hết được xây dựng xung quanh bằng một hàng đợi bất đồng bộ (asynchronous queue) Bất cứ khi nào nó nhận được dữ liệu từ một tr
hoặc Native thread), nó sẽ tuần tự hóa dữ liệu dưới dang JSON và chuyén no qua hang doi,
cuối cùng được giải mã khi nó tới nơi
Điều này có nghĩa là tất cá các thread đều dựa trên chuỗi tín hiệu JSON được truyền bất đồng bộ qua Bridge, và chúng sẽ được gửi tới một trong hai phía với mong muốn (nhưng không chắc là đảm báo) sẽ nhận được phản hồi trong tương lai Bạn cũng có thể sẽ gặp phải vấn đề tắc nghẽn thông tin và không nhận được phán hồi
Một ví dụ phô biến cho biết lý do tại sao điều này lại tạo ra các vấn đề về hiệu suất khi
được nhìn thay khi cuộn một danh sách dữ liệu lớn: Bất cứ khi nào sự kiện onScroll xảy ra
trên Native thread, thông tin sẽ được gửi không đồng bộ đến JS thread, nhưng Native thread
không chờ JS thread thực hiện xong mà nó lại gửi trở lại theo cách khác Điều này tạo ra một
sự delay, sẽ có một khoảng trồng trước khi thông tin xuất hiện trên màn hình
Tương tự như vậy, việc tính toán hiển thi layout can phải trải qua nhiều vòng trước khi nó
có thể được hiển thị trên màn hình, vì nó cần phải di qua Yoga engine trước khi có thể được tính bởi Native thread và tất nhiên chúng cũng sẽ phải đi qua Bridge đề tới JS Thread
Trang 14Chúng ta có thể nhận thay cach gin dtr ligu JSON mét cach bat dong bộ sẽ tạo ra vẫn đề
về hiệu suất Nhưng còn cách nào khác để Javascript của chúng ta giao tiếp với Native code? Đây là nơi JŠSI phát huy tác dụng
Viéc tai kién tric ca React Native sé dan loai bé Bridge va thay thé no bang mot thanh phân mới có tên là Javascr1
JSI có một vài cải tiễn mới rất thú vị, đầu tiên là JS bundle không còn phụ thuộc vào
JS core nữa Nói cách khác, JSC engine giờ đây có thể dễ dàng hoán đôi với các JavaScript
có khả năng hoạt động tốt hơn như Chrome Engine V8 chang han
Cải tiên thứ hai của kiến trúc mới này là Bằng cách sử dụng JSI, JavaScript có thê giữ tham chiếu đến C++ Host Object và truy cập phương thức trên chúng Từ đó JavaScript và các thành phần Native sẽ nhận thức và giao tiếp được lẫn nhau
Nói cách khác, JSI sẽ cho phép khả năng tương tác hoàn toàn giữa tất cả các thread Với khái niệm chia sẻ quyền sở hữu (shared ownership), code JavaScript có thê giao tiếp với các thành phần Native trực tiếp từ JS thread và bỏ qua việc tuần tự hóa thông điệp dạng JSON giữa các thành phân, loại bỏ tat cả các vấn đề tắc nghẽn va bat đồng bộ trên Bridge
Trang 15THE NEW REACT NATIVE
Ngoài việc cải thiện đáng kê hiệu suất giao tiếp giữa các thread với nhau, kiến trúc mới này cũng cho phép kiểm soát trực tiếp các Native modules Có nghĩ
thể sử dụng các Native modules khi chúng ta cần chúng, không cần kích hoạt tất cả khi khởi
chạy ứng dụng Điều này mang lại sự cải thiện hiệu suất hết sức rõ rệt
Cơ chế mới này có khả năng linh hoạt, cũng có thê có lợi cho nhiều trường hợp sử dụng khác nhau Chẳng hạn như bây giờ chúng ta có sức mạnh của C+-t trong tay, thật dé dang dé thấy React Native có thể được sử dụng trong một hệ thống rất lớn
Trang 17Thư mục này chứa tat ca cac API , Schema va cac file config kết nối cơ sở dữ liệu
e Các API đề thực hiện truy xuất và các thao tác cần thiết với
° để quy định và cấu trúc định dạng database cần lưu
® Cac file config để hỗ trợ việc kết nối với mongodb
Thư mục này bao gồm:
e Asset chira tat ca image va font cần thiết cho ứng dụng
© , dé tao frontend hinh đạng chính của các màn
xử lý dữ liệu ở trong
® Navigations dùng để điều hướng các màn hình
e Styles dé quy định format của một đối tượng cụ thê
ựrađờ u
MongoDB (bat nguồn từ “humongous”) là một hệ cơ sở dữ liệu NoSQLL mã nguồn mo
cho việc lưu trữ dữ liệu vào các bảng có quan hệ với nhau như truyền thống, MongoDB lưu các dữ liệu cau tric dudi dang giéng voi JSON(JavaScript Object Notation) va gọi tên là BSON Dự án được bắt đầu triển khai vào tháng 10 năm 2007 bởi I0gen trong khi ông ty này đang xây dựng một nên tảng như là dịch vụ (Platform as a Service) giống như Google App Engine Phải đến năm 2009, dự án này được tách độc lập Hệ thống có thể chạy
trên Windows, Linux, OS X và Solaris Nó được một số tô chức sử dụng trong thực tế như:
Craigslist : Céng ty lam việc trong lịch vực môi giới quảng cáo trên các website khác (giéng adMicro của Việt Nam) MongoDB giúp cho công ty này quản lý hàng tỉ các bản ghi
quảng cáo thuận tiện và nhanh chóng
Foursquare là một mạng xã hội gắn các thông tin địa lý Công ty này cần lưu dữ liệu của rât rât nhiêu vị trí của các địa điệm như quán cafe, nhà hàng, điêm giải trí, lich su, va
Trang 18ghi lại những nơi mà người sử dụng đã ổi qua
CERN : Trung tâm nghiên cứu năng lượng nguyên tử của Châu Âu, sử dụng MongoDB
để lưu trữ lại các kết quá, đữ liệu thí nghiệm của mình Đây là một lượng dữ liệu không lồ sẽ
ding dé sử dụng trong tương lai
uardian, SourceForge, Barclays,
g
MongoDB là một chương trình cơ sở đữ liệu mã nguồn mở được thiết kế theo kiểu
hướng đổi tượng trong đó các bảng được cấu trúc một cách linh hoạt cho phép các dữ liệu lưu trên bảng không cần phải tuân theo một dạng cấu trúc nhất định nào Chinh do cấu trúc linh hoạt này nên MongoDB có thê được dùng để lưu trữ các đữ liệu có cấu trúc phức tạp và đa dạng và không có định (hay còn gọi la Big Data)
Tuy nhiên khi đưa ra định nghĩa như ở trên tôi đã sử dung khai nệm bảng trong các cơ
sở dữ liệu có quan hệ để bạn có thể dễ hiểu Trên thực tế thì MongoDB sử dụng thuật ngữ
khác là collection hay bộ sưu tập thay vì bảng Các cơ sở dữ liệu quan hệ (như MySQL hay SQL Server ) str dụng các bảng để lưu dữ liệu Các bảng này được cấu trúc với một số lượng
cột (column) nhất định và các cột này cũng được định nghĩa với kiêu dữ liệu nhất định Ngược
lại MongoDB lưu document (hay tài liệu tương tự như các record trong MySQL hay SQL
collection với định dạng JSON hay Javascript Object Notation Do đó khi truy van dữ liệu hay cập nhật dữ liệu của document trong MongoDB chúng ta sử dụng cú pháp theo kiểu hướng đối tượng
Một MongoDB Server sẽ chứa nhiều database Mỗi database lại chứa một hoặc nhiều collection Đây là một tập các documents, về mặt logic thì chúng gần tương tự như các table trong CSDL quan hệ Tuy nhiên, điểm hay ở đây là ta không cần phải định nghĩa trước cầu
Trang 19trúc của dữ liệu trước khi thao tác thêm, sửa dữ liệu Một document là một đơn vị dữ liệu —
một bán ghi (không lớn hơn 16MB) Mỗi chúng lại chứa một tập các trước hoặc các cặp key
— value Key là một chuỗi ký tự, dùng để truy xuất gia tri dang : string, integer, double,
Cấu trúc có vẻ khá giống JSON, tuy nhiên, khi lưu trữ document này ra database,
MongoDB sẽ serialize dữ liệu thành một dạng mã hóa nhị phân đặc biệt - BSON Ưu điểm của BSON là hiệu quả hơn các dạng format trung gian như XML hay JSON cả hệ tiêu thụ bộ
nhớ lẫn hiệu năng xử lý BSON hỗ trợ toàn bộ dạng dữ liệu mà JSON hỗ trợ (string, integer, double, Boolean, array, object, null) va thém mét 36 dạng dữ liệu đặc biệt như regular
Trang 20id username | email created at
ức năng, vai tro cu
ức năng:
e Truy vấn: Đây được xem là tính năng tốt nhất của MongoDB Nó có tác dụng giúp các trường truy vấn phạm vi, kết hợp cùng việc tìm kiếm biểu thức nhằm trả về kết quả tài liệu cụ thể với kích thước nhất định Ngoài ra, các trường dùng
B còn được dùng đề lập chỉ mục chính, phụ
® Lưu trữ tệp: Khi tìm hiểu hệ cơ sở dữ liệu MongoDB thi ban sẽ thay, tinh nang
lưu trữ tệp được dùng như một hệ thống tệp (gọi là GridFS) đóng vai trò cân
bằng tái, đồng thời, sao chép dữ liệu trên nhiều máy tính Cụ thể, GridFS chia một tệp ra làm nhiều phân và lưu trữ thành các tài liệu riêng biệt Sau đó, người
dùng dễ dàng truy cập GridFS thông qua Mongofiles hay các plugin sử dụng
e Tập hợp: Tính năng này chính là chương trình mang đến ba giải pháp để thực hiện tập hợp gồm Aggregation Pipeline, Mapreduce và Single Aggregation Trong d6, Aggregation Pipeline duoc danh gia la co hiéu suất tốt
nhất
e Nhân rộng: MongoDB cung cấp Replica Set cho phép nhân 2 hoặc nhiều bản sao của dữ liệu Đồng thời, mỗi bản sao lại đóng vai trò chính và phụ
Khi nhân rộng, toàn bộ dữ liệu khi ghi và đọc được thực hiện trên bản sao
Ban sao thứ cấp sẽ dùng bản sao tích hợp để có thê duy trì các bản sao dữ liệu
Trang 21Trong trường hợp có bắt kỳ bản sao chính nào bị thất bại thì Replica set sẽ chọn một bán sao thứ cấp đề thay thế làm bản sao chính tiếp theo Trong quá trình nhân rộng, Replica thứ cấp được tùy ý chọn các hoạt động nhưng dữ liệu cuối cùng vẫn phải tuân theo mặc định
e®_ Cân bằng tải: MongoDB sử dụng Sharding nhằm chia tỷ lệ theo chiều ngang và xác định dữ liệu phân phối trong collection Điều này giúp người dùng có thê
chọn một Shard key
Nói tóm lại, MongoDB cân bằng tải bằng cách dựa vào các Shard key để chia dữ liệu thành các phạm vi và phân phối đồng đều Chúng có thể chạy trên nhiều máy chủ khác nhau và thực hiện chức năng sao chép dữ liệu hay cân bằng tải nhằm giữ hệ thống hoạt động liên tục trong trường hợp phát sinh lỗi về phần cứng
e dễ dàng tiếp cận và sử dụng cho các ứng dụng
e_ Các thao tác thêm sửa xóa don giản với mông
® Dược mọi người ưa chuộng rộng
@ Phat trién tot và có những chức năng nỗi bật
ém co ba
Database la mot container vat ly cho cdc collection Méi DB được thiét lập cho
nó một danh sách cac files hé thống files Một máy chủ Mongol3B đơn thường có nhiéu DB
Collection là một nhóm các documents của MongolDB Nó tương đương với một table
trong RDBMS Một Collection tồn tại trong một cơ sở dữ liệu duy nhất Các collection ko tạo
nên một schema Documents trong collection có thê có các fñields khác nhau Thông thường, tat ca cac documents trong collections cé muc đích khá giông nhau hoặc liên quan tới nhau
Mot document là một tập hợp các cặ value Documents có schema động Schema
động có nghĩa là documents trong cùng một collection không cần phải có cùng một nhóm các fields hay cầu trúc giống nhau, và các fñelds phố biến trong các documents của collection có
Trang 22thê chứa các loại đữ liệu kh
less, SQL định nghĩa một lược đồ thông qua định nghĩa
bảng Một lược đồ Mongoose là một lớp cấu trúc dữ liệu được thi hành qua lớp ứng dụng
Cac thao tacco ba 6
Insert thêm một document mới vao mét collection Néu collection hién không tồn tai, insert sé tao collection
MongoDB cung cấp 2 phương thức để chèn document vao mot collection
e db.collection.msertOne(): chèn một tài liệu mới vào một collection Nếu docume
không có trường ¡id, MongoDB sẽ tự động thêm trường _¡d với value kiểu ObjectId
{
status: "pending” ¢—— field: value
)
e db.collection.insertMany(): insert nhiéu document vao m6t collection, truyén vao phuong thuc la mang cac document
Read operation truy xuat documents tir mét collection
Dé lay ra tất cả các document trong collection, truyền vào một document tréng vao phương thức find
Ngoài ra còn các điêu kiện cụ thê hơn đề truy xuât cụ thê hơn
Trang 23Update operation chỉnh sửa documents đã tôn tại trong một collection Đề update một document, MongoDB cung cấp các toán tử update trong đó có $set
Đề sử dụng các toán tử update, truyền vào phương thức update một update document Một vài toán tử update, trong đó có $set, sẽ tạo ra các trường nếu trường đó không tồn tại
db inventory.updateOne(
{ item: "paper" },
$set: { "size.uom”; "cm", status: "P" },
$currentDate: { lastModified: true }
e St dung toan ttr $set dé gia tri cua trường s1ze.uom thành cm và giá trị của trương field thành ”P”
® Sử dụng toán tử $currentDate để update giá trị của trường lastModifñed thành ngày hiện
tai Néu lastModified không tồn tại, $currentDate sẽ tạo trường này
db inventory.updateMany(
{ "qty”: { $lt: 50 } },
Sf
L
$set: { "“size.uom": “in", status: "P" },
$currentDate: { lastModified: true }
® Update nhiều đối tượng với điều kiện thỏa
Delete operation xóa bỏ document từ một collection
Đề xóa tất cả các tài liệu từ một collection, truyền một document Ññlter ƒ} tới phương thức đb.collection.deleteMany()
Ví dụ sau xóa tất cả các document của collection inventory
Xóa tat ca cac document théa mãn điều kiện
Trang 24Bạn có thể chỉ định các tiêu chí hoặc bộ lọc xác định các tài liệu cần xóa
Đề chỉ định điều kiện bằng, sử dụng biểu thức <ñeld>:<value>
Có thê sử dụng query operators đề chỉ định các điều kiện:
{ <fieldi>: { <operatori>: <valuel> }, }
Xóa chỉ một document thỏa mãn điều kiện
Đề xóa chỉ một document phù hợp với điều kiện( trường hợp có nhiều document thỏa man thi sé xoa document dau tién), str dung db.collection.deleteOne()
Vi du sau xda document dau tiên mà có status băng "D”
db.inventory.deleteOne( { status: "D" } )
Solug é
NodeJS duge phat trién tir Javascript vao nam 2009 béi Ryan Dahl NodeJS co cach thức hoạt động chủ yếu trên Server sử dụng đề xây dựng cho các ứng dụng realtime NodelS
dùng mô hình I/O lập trình dựa theo sự kiện non
Chính vi vay, NodeJS tuong đối gọn nhẹ, hiệu quả và là một công cụ hoàn hảo dành
cho mọi ứng dụng chuyên sâu về dữ liệu dựa theo khoảng thời gian thực khi chạy trên những thiết bị phân tán NodeJs thường xuyên được dùng cho mục đích xây dựng một số ứng dụng như: Ad Server, Websocket server, Fast File Upload Client, RESTful API, Cloud Services,
@ NodeJS là một Platform mà không phải là một Framework mà Chính vì vậy, nó cho phép chúng ta có thể xây dựng cho các website một cách độc lập và nhanh chóng hơn
@ NodeJS thường sẽ chạy trên đa nền tảng phía Server nên nó có thê thực hiện chạy ở bat
kỳ các máy như: Mac — —
e®_ NodeIS không được xem là một ngôn ngữ lập trình, nên những người mới bắt đầu làm quen với NodeJS thì không thể học ngay được nếu như không nam chắc kiến thức lập trình căn bản như: các giao thức, Javascript, Tuy nhiên, cộng đồng NodeJS thường rat lon va no san sang support cho ban moi luc moi noi
Trang 25® NodeIS được xem là một máy chủ đơn luồng và không có khả năng hỗ trợ đa luồng
e Phần core của NodelS thường được biết bằng ngôn ngữ C++ nên nó hiệu năng cung như tốc độ xử lý tương đối cao Nhờ vậy, hầu hết các ứng dụng NodeJS đều có khả năng đáp ứng được thời gian thực chạy trên đa nền tảng, đa thiết bị
được đơn giản hóa
® NodelS có thê tạo, mở, đọc, ghi, xóa và đóng các tập tin ngay khi đang truy cập trên máy chủ
® Tạo ra nội dung cho các trang web động
® Node]S thực hiện thu thập các dữ liệu theo yêu cầu