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

MongoDB:Truy vấn nhiều bộ sưu tập với hai truy vấn?

Cố gắng 'tạo một truy vấn "quan hệ" "trong MongoDB sẽ là một bài tập thất vọng. Lược đồ của bạn lưu trữ một số thông tin (xếp hạng của bài đăng) trong một bộ sưu tập và thông tin khác (tuổi của tác giả) trong một bộ sưu tập khác, nhưng tất cả các truy vấn MongoDB đều hoạt động trên một bộ sưu tập. Trừ khi bạn chuẩn hóa dữ liệu của mình (điều mà bạn đã nói là không muốn làm), bạn sẽ cần phương pháp hai lần để làm cho việc này hoạt động.

Một cách tiếp cận sẽ hoạt động là tạo một mảng ID tác giả và sử dụng nó trong một truy vấn của bộ sưu tập bài đăng bằng cách sử dụng '$ in'. Đây là những gì nó có thể trông giống như trong JavaScript bằng cách sử dụng mongo shell:

> var authorList = [];
> var authorCursor = db.authors.find({age:{$gt:19,$lt:25}},{"_id":1});
> while(authorCursor.hasNext()){authorList.push(authorCursor.next()["_id"])};
> db.posts.find({"author.$id":{$in:authorList},rating:{$gt:6,$lt:9}});

Dòng đầu tiên tạo ra một mảng trống. Dòng thứ hai tạo một con trỏ sẽ chọn _id của tất cả các tác giả trong độ tuổi mục tiêu của bạn. Dòng thứ ba sử dụng con trỏ để điền một mảng tác giả _id S. Dòng thứ tư hiển thị tất cả các bài đăng phù hợp với tiêu chí mục tiêu của bạn:tác giả _id trong danh sách mà chúng tôi chỉ xây dựng và xếp hạng trong phạm vi bạn đã chỉ định.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm thế nào để Lặp lại thông qua Đối tượng bên trong Bộ sưu tập Meteor Mongo

  2. Giao dịch MongoDB?

  3. MongoDB ReplicaSet - Vai trò CHÍNH giảm xuống THỨ HAI khi chỉ còn lại CHÍNH

  4. mongodb c # cách làm việc với tài liệu BSON

  5. MongoDB c # truy xuất tất cả các phần tử phù hợp trong một mảng trong tài liệu bằng trình tạo Định nghĩa