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

Sử dụng làm cơ sở dữ liệu đồ thị để tìm bạn của bạn bè trong MongoDb

Mặc dù không phải là không thể, nhưng MongoDB sẽ không phù hợp cho tình huống này.

Lý do là MongoDB không thực hiện JOIN. Khi bạn cần một truy vấn kéo dài nhiều tài liệu, bạn cần một truy vấn riêng cho từng tài liệu.

Trong ví dụ của bạn, mỗi user tài liệu sẽ có một mảng với _id của bạn bè của họ. Để tìm "tất cả bạn bè của bạn bè của UserA cũng là bạn của UserB" có nghĩa là bạn sẽ:

  1. tìm userA và có được nhóm bạn của anh ấy
  2. tìm tất cả người dùng trong mảng đó và nhận mảng bạn bè của họ
  3. tìm tất cả người dùng trong các mảng này có UserB trong mảng bạn bè của họ

Đây là ba truy vấn bạn phải thực hiện. Giữa mỗi truy vấn này, tập kết quả phải được gửi đến ứng dụng, ứng dụng phải hình thành một truy vấn mới và gửi nó trở lại cơ sở dữ liệu. Tập hợp kết quả trả về từ truy vấn thứ 2 có thể khá lớn, có nghĩa là truy vấn thứ 3 có thể mất một lúc.

tl; dr: Sử dụng các công cụ thích hợp cho công việc. Khi dữ liệu của bạn dựa trên đồ thị và bạn muốn thực hiện các truy vấn dựa trên đồ thị trên đó, hãy sử dụng cơ sở dữ liệu đồ thị.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Đối số thứ ba khi tạo mô hình trong MongooseJS

  2. Mongoose phát hiện cơ sở dữ liệu chưa sẵn sàng

  3. Cách sử dụng mongodump cho 1 bộ sưu tập

  4. Cấu trúc cơ sở dữ liệu MongoDB và Trợ giúp về các phương pháp hay nhất

  5. Mongodb php lấy id của tài liệu mới?