Hướng dẫn mongodb aggregate array of objects - mongodb mảng tổng hợp các đối tượng

Đây là một phần của bộ sưu tập của tôi trong

[{ "_id":"Lenovo", 
  "models":[{ "model": "ThinkPad T400", 
              "gens":["1","2","3"]
            }...]
}...]
8:

[{"company":"Lenovo", "models": 
    [{"model":"ThinkPad T400", "gens": 
        [{"gen":"3", "start":2012},
        {"gen":"2", "start":2008},
        {"gen":"1", "start":2004}]
    }...]
}...]

Tôi đang cố gắng đến với một lệnh tổng hợp sẽ trả lại cho tôi như sau:

[{ "_id":"Lenovo", 
  "models":[{ "model": "ThinkPad T400", 
              "gens":["1","2","3"]
            }...]
}...]

Tôi đã thử lệnh tổng hợp sau nhưng nó không hoạt động:

db.makes.aggregate[[{
    $group:{
        _id: '$company',
        models: { $push:  { 
            model: "$models.model", 
            gen: "$models.gens.gen"
        }} 
    } 
}]]

Tôi nhận được kết quả này:

[{ "_id":"Lenovo", 
  "models":[{ "model": ["ThinkPad T400"], 
              "gens":[ ["1","2","3"] ]
            }...]
}...]

Có lẽ là do mỗi đối tượng của tôi có một mảng các đối tượng [mô hình] và các đối tượng đó cũng có một mảng các đối tượng [GENS].

Yêu cầu đúng cho MongoDB sẽ trả lại cho tôi kết quả dự kiến ​​của tôi là gì?

MẹoMongoDB Manual

Xem thêm:

Converts a document to an array. The return array contains an element for each field/value pair in the original document. Each element in the return array is a document that contains two fields

db.makes.aggregate[[{
    $group:{
        _id: '$company',
        models: { $push:  { 
            model: "$models.model", 
            gen: "$models.gens.gen"
        }} 
    } 
}]]
0 and
db.makes.aggregate[[{
    $group:{
        _id: '$company',
        models: { $push:  { 
            model: "$models.model", 
            gen: "$models.gens.gen"
        }} 
    } 
}]]
1:

  • Tài liệu về nhà → Hướng dẫn sử dụng MongoDB

  • [{ "_id":"Lenovo", 
      "models":[{ "model": "ThinkPad T400", 
                  "gens":["1","2","3"]
                }...]
    }...]
    
    9Conver một tài liệu cho một mảng. Mảng trả về chứa một phần tử cho mỗi cặp trường/giá trị trong tài liệu gốc. Mỗi phần tử trong mảng trả về là một tài liệu chứa hai trường
    db.makes.aggregate[[{
        $group:{
            _id: '$company',
            models: { $push:  { 
                model: "$models.model", 
                gen: "$models.gens.gen"
            }} 
        } 
    }]]
    
    0 và
    db.makes.aggregate[[{
        $group:{
            _id: '$company',
            models: { $push:  { 
                model: "$models.model", 
                gen: "$models.gens.gen"
            }} 
        } 
    }]]
    
    1:

Trường

db.makes.aggregate[[{
    $group:{
        _id: '$company',
        models: { $push:  { 
            model: "$models.model", 
            gen: "$models.gens.gen"
        }} 
    } 
}]]
0 chứa tên trường trong tài liệu gốc. has the following syntax:

{ $objectToArray: }

Trường

db.makes.aggregate[[{
    $group:{
        _id: '$company',
        models: { $push:  { 
            model: "$models.model", 
            gen: "$models.gens.gen"
        }} 
    } 
}]]
1 chứa giá trị của trường trong tài liệu gốc.
[{ "_id":"Lenovo", 
  "models":[{ "model": "ThinkPad T400", 
              "gens":["1","2","3"]
            }...]
}...]
9
applies to the top-level fields of its argument. If the argument is a document that itself contains embedded document fields, the
[{ "_id":"Lenovo", 
  "models":[{ "model": "ThinkPad T400", 
              "gens":["1","2","3"]
            }...]
}...]
9
does not recursively apply to the embedded document fields.

Để biết thêm thông tin về biểu thức, xem biểu thức.

Để biết thêm thông tin về biểu thức, xem biểu thức.

Thí dụ

Kết quả

{ $objectToArray: { item: "foo", qty: 25 } }

[
{
"k" : "item",
"v" : "foo"
},
{
"k" : "qty",
"v" : 25
}
]

{ $objectToArray: {
item: "foo",
qty: 25,
size: { len: 25, w: 10, uom: "cm" }
} }

[
{
"k" : "item",
"v" : "foo"
},
{
"k" : "qty",
"v" : 25
},
{
"k" : "size",
"v" : {
"len" : 25,
"w" : 10,
"uom" : "cm"
}
}
]

Xem xét bộ sưu tập

db.makes.aggregate[[{
    $group:{
        _id: '$company',
        models: { $push:  { 
            model: "$models.model", 
            gen: "$models.gens.gen"
        }} 
    } 
}]]
8 với các tài liệu sau:

{ "_id" : 1, "item" : "ABC1", dimensions: { l: 25, w: 10, uom: "cm" } }
{ "_id" : 2, "item" : "ABC2", dimensions: { l: 50, w: 25, uom: "cm" } }
{ "_id" : 3, "item" : "XYZ1", dimensions: { l: 70, w: 75, uom: "cm" } }

Hoạt động đường ống tổng hợp sau đây Sử dụng

[{ "_id":"Lenovo", 
  "models":[{ "model": "ThinkPad T400", 
              "gens":["1","2","3"]
            }...]
}...]
9 để trả về trường
[{ "_id":"Lenovo", 
  "models":[{ "model": ["ThinkPad T400"], 
              "gens":[ ["1","2","3"] ]
            }...]
}...]
0 dưới dạng mảng:
[{ "_id":"Lenovo", 
  "models":[{ "model": "ThinkPad T400", 
              "gens":["1","2","3"]
            }...]
}...]
9
to return the
[{ "_id":"Lenovo", 
  "models":[{ "model": ["ThinkPad T400"], 
              "gens":[ ["1","2","3"] ]
            }...]
}...]
0 field as an array:

[{ "_id":"Lenovo", 
  "models":[{ "model": "ThinkPad T400", 
              "gens":["1","2","3"]
            }...]
}...]
0

Hoạt động trả về như sau:

[{ "_id":"Lenovo", 
  "models":[{ "model": "ThinkPad T400", 
              "gens":["1","2","3"]
            }...]
}...]
1

Xem xét bộ sưu tập

db.makes.aggregate[[{
    $group:{
        _id: '$company',
        models: { $push:  { 
            model: "$models.model", 
            gen: "$models.gens.gen"
        }} 
    } 
}]]
8 với các tài liệu sau:

[{ "_id":"Lenovo", 
  "models":[{ "model": "ThinkPad T400", 
              "gens":["1","2","3"]
            }...]
}...]
2

Hoạt động đường ống tổng hợp sau đây Sử dụng

[{ "_id":"Lenovo", 
  "models":[{ "model": "ThinkPad T400", 
              "gens":["1","2","3"]
            }...]
}...]
9 để trả về trường
[{ "_id":"Lenovo", 
  "models":[{ "model": ["ThinkPad T400"], 
              "gens":[ ["1","2","3"] ]
            }...]
}...]
0 dưới dạng mảng:
[{ "_id":"Lenovo", 
  "models":[{ "model": "ThinkPad T400", 
              "gens":["1","2","3"]
            }...]
}...]
9
along with
[{ "_id":"Lenovo", 
  "models":[{ "model": ["ThinkPad T400"], 
              "gens":[ ["1","2","3"] ]
            }...]
}...]
3 and
[{ "_id":"Lenovo", 
  "models":[{ "model": ["ThinkPad T400"], 
              "gens":[ ["1","2","3"] ]
            }...]
}...]
4 to calculate the total items in stock per warehouse.

[{ "_id":"Lenovo", 
  "models":[{ "model": "ThinkPad T400", 
              "gens":["1","2","3"]
            }...]
}...]
3

Hoạt động trả về như sau:

[{ "_id":"Lenovo", 
  "models":[{ "model": "ThinkPad T400", 
              "gens":["1","2","3"]
            }...]
}...]
4

Xem xét bộ sưu tập

db.makes.aggregate[[{
    $group:{
        _id: '$company',
        models: { $push:  { 
            model: "$models.model", 
            gen: "$models.gens.gen"
        }} 
    } 
}]]
8 với các tài liệu sau:

[{ "_id":"Lenovo", 
  "models":[{ "model": "ThinkPad T400", 
              "gens":["1","2","3"]
            }...]
}...]
2

Hoạt động đường ống tổng hợp sau đây Sử dụng

[{ "_id":"Lenovo", 
  "models":[{ "model": "ThinkPad T400", 
              "gens":["1","2","3"]
            }...]
}...]
9 để trả về trường
[{ "_id":"Lenovo", 
  "models":[{ "model": ["ThinkPad T400"], 
              "gens":[ ["1","2","3"] ]
            }...]
}...]
0 dưới dạng mảng:

[{ "_id":"Lenovo", 
  "models":[{ "model": "ThinkPad T400", 
              "gens":["1","2","3"]
            }...]
}...]
6

Hoạt động trả về như sau:

[{ "_id":"Lenovo", 
  "models":[{ "model": "ThinkPad T400", 
              "gens":["1","2","3"]
            }...]
}...]
7

Hoạt động đường ống tổng hợp sau đây sử dụng
[{ "_id":"Lenovo", 
  "models":[{ "model": "ThinkPad T400", 
              "gens":["1","2","3"]
            }...]
}...]
9 cùng với
[{ "_id":"Lenovo", 
  "models":[{ "model": ["ThinkPad T400"], 
              "gens":[ ["1","2","3"] ]
            }...]
}...]
3 và
[{ "_id":"Lenovo", 
  "models":[{ "model": ["ThinkPad T400"], 
              "gens":[ ["1","2","3"] ]
            }...]
}...]
4 để tính tổng số các mặt hàng trong kho trên mỗi kho.

Hoạt động đường ống tổng hợp sau đây tính toán tổng số kho cho mỗi mục và thêm vào tài liệu
[{ "_id":"Lenovo", 
  "models":[{ "model": ["ThinkPad T400"], 
              "gens":[ ["1","2","3"] ]
            }...]
}...]
6:

Bài Viết Liên Quan

Chủ Đề