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

Toán tử $ unwind trong MongoDB là gì?

Trước hết, chào mừng bạn đến với MongoDB!

Điều cần nhớ là MongoDB sử dụng cách tiếp cận "NoSQL" để lưu trữ dữ liệu, vì vậy hãy loại bỏ những suy nghĩ về lựa chọn, kết hợp, v.v. khỏi tâm trí của bạn. Cách nó lưu trữ dữ liệu của bạn dưới dạng tài liệu và bộ sưu tập, cho phép một phương tiện động để thêm và lấy dữ liệu từ các vị trí lưu trữ của bạn.

Nói như vậy, để hiểu khái niệm đằng sau tham số $ unwind, trước tiên bạn phải hiểu trường hợp sử dụng mà bạn đang cố gắng trích dẫn đang nói gì. Tài liệu ví dụ từ mongodb.org như sau:

{
 title : "this is my title" ,
 author : "bob" ,
 posted : new Date () ,
 pageViews : 5 ,
 tags : [ "fun" , "good" , "fun" ] ,
 comments : [
             { author :"joe" , text : "this is cool" } ,
             { author :"sam" , text : "this is bad" }
 ],
 other : { foo : 5 }
}

Lưu ý rằng các thẻ thực sự là một mảng gồm 3 mục, trong trường hợp này là "vui", "tốt" và "vui".

Những gì $ unwind làm là cho phép bạn bóc một tài liệu cho từng phần tử và trả về tài liệu kết quả đó. mục đó ".

Do đó, kết quả của việc chạy như sau:

db.article.aggregate(
    { $project : {
        author : 1 ,
        title : 1 ,
        tags : 1
    }},
    { $unwind : "$tags" }
);

sẽ trả lại các tài liệu sau:

{
     "result" : [
             {
                     "_id" : ObjectId("4e6e4ef557b77501a49233f6"),
                     "title" : "this is my title",
                     "author" : "bob",
                     "tags" : "fun"
             },
             {
                     "_id" : ObjectId("4e6e4ef557b77501a49233f6"),
                     "title" : "this is my title",
                     "author" : "bob",
                     "tags" : "good"
             },
             {
                     "_id" : ObjectId("4e6e4ef557b77501a49233f6"),
                     "title" : "this is my title",
                     "author" : "bob",
                     "tags" : "fun"
             }
     ],
     "OK" : 1
}

Lưu ý rằng điều duy nhất thay đổi trong mảng kết quả là những gì được trả về trong giá trị thẻ. Nếu bạn cần một tài liệu tham khảo bổ sung về cách hoạt động của nó, tôi đã bao gồm một liên kết ở đây. Hy vọng rằng điều này sẽ hữu ích và chúc bạn may mắn khi bước vào một trong những hệ thống NoSQL tốt nhất mà tôi đã tìm thấy cho đến nay.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Lên lịch công việc Node.js năm phút một lần

  2. Lấy một giá trị từ MongoDB theo tên khóa của nó

  3. Tạo trang web cửa hàng thực phẩm trực tuyến bằng Angular, NodeJS, Express và MongoDB

  4. MongoError:Không thể trích xuất khóa địa lý từ đối tượng có Loại:Điểm

  5. Sửa đổi thứ tự hiển thị các thuộc tính trong MongoDB