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

trích xuất giá trị mảng con trong mongodb

Bạn có một số cú pháp trong ví dụ ban đầu có thể không làm được những gì bạn mong đợi .. nghĩa là, có vẻ như mục đích của bạn là chỉ khớp điểm cho một loại cụ thể ('kỳ thi' trong ví dụ của bạn, 'bài kiểm tra' theo mô tả của bạn ).

Dưới đây là một số ví dụ sử dụng trình bao MongoDB 2.2.

$elemMatch phép chiếu

Bạn có thể sử dụng phép chiếu $ elemMatch để trả về phần tử phù hợp đầu tiên trong một mảng:

db.students.find(
    // Search criteria
    { '_id': 22 },

    // Projection
    { _id: 0, scores: { $elemMatch: { type: 'exam' } }}
)

Kết quả sẽ là phần tử phù hợp của mảng cho mỗi tài liệu, ví dụ:

{ "scores" : [ { "type" : "exam", "score" : 75.04996547553947 } ] }

Khung tổng hợp

Nếu bạn muốn hiển thị nhiều giá trị phù hợp hoặc định hình lại tài liệu kết quả thay vì trả về phần tử mảng phù hợp đầy đủ, bạn có thể sử dụng Khung tổng hợp :

db.students.aggregate(
    // Initial document match (uses index, if a suitable one is available)
    { $match: {
        '_id': 22, 'scores.type' : 'exam'
    }},

    // Convert embedded array into stream of documents
    { $unwind: '$scores' },

    // Only match scores of interest from the subarray
    { $match: {
        'scores.type' : 'exam'
    }},

    // Note: Could add a `$group` by _id here if multiple matches are expected

    // Final projection: exclude fields with 0, include fields with 1
    { $project: {
        _id: 0,
        score: "$scores.score"
    }}
)

Kết quả trong trường hợp này bao gồm sẽ là:

{ "result" : [ { "score" : 75.04996547553947 } ], "ok" : 1 }



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm thế nào để lưu trữ trang web trong NodeJS và MongoDB? Và chi phí sẽ là bao nhiêu?

  2. Thứ tự các trường từ truy vấn tìm với phép chiếu

  3. MongoDB $ asinh

  4. Reg:mongo db đầu ra sai theo mỗi truy vấn

  5. Tìm kiếm tất cả các đa giác có chứa một loạt điểm trong mongodb