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

Mongodb:chỉ lấy lá cây

Nếu bạn thêm trường parent để nắm bắt nguồn gốc cho mỗi nút, nó có thể giúp tối ưu hóa việc truy vấn trên tập dữ liệu lớn hơn. Ví dụ:

{"parent": "", "node": "#a"}
{"parent": "#a", "node": "#a#b"}
{"parent": "#a", "node": "#a#c"}
{"parent": "#a#b", "node": "#a#b#1"}
{"parent": "#a#b", "node": "#a#b#2"}
{"parent": "#a#c", "node": "#a#c#1"}
{"parent": "#a#c#1", "node": "#a#c#1#x"}

Sau đó, bạn có thể sử dụng $ graphLookup (tổng hợp) toán tử để đi ngang.

Một giải pháp thay thế cho truy vấn regex của bạn để lấy tất cả các nút con của nút cây cho #a#c :

db.tree.aggregate([
        {$match:{"node":"#a#c"}}, 
        {$graphLookup:{
                       from:"tree", 
                       startWith:"$node", 
                       connectFromField:"node", 
                       connectToField:"parent", 
                       as:"dep"}}, 
        {$project:{"dep.node":1, "_id":0}}
])

Chỉ tìm các lá của #a#c :

db.tree.aggregate([
        {$match:{"parent": {$regex:"^#a#c"}}}, 
        {$graphLookup:{
                       from:"tree", 
                       startWith:"$node", 
                       connectFromField:"node", 
                       connectToField:"parent", 
                       as:"dep"}}, 
        {$match:{dep:[]}}, 
        {$project:{"_id":0, node:1}}
])

Tôi cũng khuyên bạn nên xem lại Cấu trúc cây mô hình , có nhiều cách khác nhau để sử dụng cấu trúc dữ liệu cây trong MongoDB. Tùy thuộc vào trường hợp sử dụng của bạn, bạn nên sử dụng các cấu trúc nhất định cho các lợi ích truy vấn ứng dụng của bạn.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tôi có thể sử dụng $ project để trả về một trường làm tài liệu cấp cao nhất trong truy vấn tổng hợp mongo không?

  2. Làm cách nào để cập nhật hai trường gia tăng trong một lệnh trong MongoDB?

  3. Lỗi ứng dụng sau khi triển khai ứng dụng Meteor 1.0 trên heroku

  4. Lưu trữ đối tượng Json trong khóa chuỗi Mongoose

  5. Mongodb Map Giảm hiệu suất bằng cách sử dụng Chỉ mục