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

Sử dụng $ graphLookup để xem qua cấu trúc dữ liệu lồng nhau trong MongoDB

Tôi không biết liệu bạn có còn đang tìm câu trả lời cho điều này hay không, nhưng nếu bạn sử dụng mongoose, bạn có thể tận dụng điền tính năng và sử dụng nó làm phần mềm trung gian

Đây là một ví dụ:Giả sử tôi muốn có một danh sách gồm những người và bạn bè của họ, bạn bè của họ, v.v. Kết quả sẽ như thế này:

[
    {
        _id: "abc123",
        name: "John Doe",
        friends: [
            {
                _id: "efg456",
                name: "Foo bar",
                friends: [
                    {
                        _id: "hij789",
                        name: "Jane Doe",
                        friends: [more friends...]
                    }
                ]
            }
        ]
]

Trong db chúng được lưu trữ như thế này

{_id: "abc123", name: "John Doe", friends: ["efg456"]}
{_id: "efg456", name: "Foo bar", friends: ["hij789"]}
{_id: "hij789", name: "Jane Doe", friends: [more friends...]}

Lược đồ và phần mềm trung gian của bạn sẽ là:

const Person = new Schema<Folder>({
    name: {type: String, required: true},
    friends: [{type: Schema.Types.ObjectId, ref: "person"}],
}, {timestamps: true})

Person.pre("find", function(next) {
    this.populate("friends")
    next()
})

Thêm chức năng làm phần mềm trung gian vào find sẽ làm cho nó chạy cho mọi người được tìm thấy. Điều đó bao gồm những đứa trẻ trong friends mảng.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Trường hợp cho chỉ số băm MongoDB

  2. mongodb chèn không thành công do ngoại lệ ổ cắm

  3. Chuyển các giá trị hộp kiểm vào cơ sở dữ liệu bằng JavaScript

  4. Tính điểm từ một trường hiện có với các điều kiện

  5. MongoDB nhóm theo phân loại riêng biệt với nhau