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

Truy vấn tổng hợp MongoDB- Đổi tên các trường được trả về từ bên trong tài liệu được nhúng

Có một số cách tiếp cận để giải quyết vấn đề này, nhưng nó phụ thuộc phần lớn vào phiên bản MongoDB của bạn. Các phiên bản gần đây hơn từ 2.6 trở lên hỗ trợ $ bản đồ toán tử mà bạn có thể sử dụng trong $ project để làm những gì bạn muốn:

db.friend.aggregate([
    { "$project": {
        "name": 1,
        "buddies": {
            "$map": {
                "input": "$friends",
                "as": "el",
                "in": {
                    "nickName": "$$el.name",
                    "age": "$$el.age"
                }
            }
        }
    }}
])

Trong các phiên bản trước, bạn sẽ sử dụng $ unwind để làm việc với các phần tử của mảng và xây dựng lại qua $ nhóm :

db.collection.aggregate([
    { "$unwind": "$friends" },
    { "$group": {
        "_id": "$_id",
        "name": { "$first": "$name" },
        "buddies": {
            "$push": {
                "nickName": "$friends.name",
                "age": "$friends.age"
            }
        }
    }}
])

Với biểu mẫu đầu tiên hiệu quả hơn một chút vì bạn không khử chuẩn hóa nội dung mảng và tạo ra nhiều tài liệu hơn trong quá trình xử lý.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tính năng không được hỗ trợ:$ text trong document db với khả năng tương thích mongodb 3.6

  2. Cách thay thế một phần tử trong trường mảng trong mongodb

  3. Làm cách nào để đếm tất cả các tài liệu trong một bộ sưu tập và sử dụng cont trong bộ điều khiển, với MongoDB và Express.js?

  4. Tải lên tệp MEAN Stack

  5. Không đồng bộ, Gọi lại, Đóng cửa, Ôi trời