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

Tìm kiếm đệ quy trên một bộ sưu tập trong MongoDB

Bắt đầu từ MongoDB 3.4, chúng ta có thể thực hiện việc này với Khung tổng hợp.

Giai đoạn đầu tiên và quan trọng nhất trong quy trình của chúng tôi là $graphLookup sân khấu. $graphLookup cho phép chúng tôi so khớp đệ quy trên trường "cha" và "tên". Kết quả là, chúng tôi nhận được tổ tiên của mỗi "tên".

Giai đoạn tiếp theo trong quy trình là $match giai đoạn mà chúng tôi chỉ cần chọn "tên" mà chúng tôi quan tâm.

Giai đoạn cuối cùng là $addFields hoặc $project giai đoạn mà chúng tôi áp dụng một biểu thức cho mảng "tổ tiên" bằng cách sử dụng $map toán tử mảng.

Tất nhiên với $reverseArray toán tử chúng tôi đảo ngược mảng của chúng tôi để có được kết quả mong đợi.

db.collection.aggregate(
    [ 
        { "$graphLookup": { 
            "from": "collection", 
            "startWith": "$parent", 
            "connectFromField": "parent", 
            "connectToField": "name", 
            "as": "ancestors"
        }}, 
        { "$match": { "name": "D" } }, 
        { "$addFields": { 
            "ancestors": { 
                "$reverseArray": { 
                    "$map": { 
                        "input": "$ancestors", 
                        "as": "t", 
                        "in": { "name": "$$t.name" }
                    } 
                } 
            }
        }}
    ]
)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongo Aggregation

  2. Kaa Java SDK không đồng bộ hóa với KAA Sandbox MongoDB trên AWS

  3. Mongodb Driver:thiếu dấu gạch chéo phân định giữa các máy chủ và các tùy chọn

  4. Cách sử dụng mô hình hóa dữ liệu MongoDB để cải thiện hoạt động thông lượng

  5. Tên trường FieldPath không được chứa '.' trong nhóm $