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

MongoDB- Tìm nạp phần tử mảng chính xác, loại trừ các phần tử khác

Đây là một quan niệm sai về mảng tiêu chuẩn và dễ hiểu với MongoDB. Tiêu chí truy vấn sẽ mang lại kết quả phù hợp trong phạm vi tài liệu , không nhất thiết chỉ các mục trong một mảng bạn đang tìm kiếm. Nói cách khác, với mục tiêu mong muốn của bạn là tìm DATA NOT FOUND , hầu hết các truy vấn đơn giản sẽ tìm thấy bất kỳ tài liệu nào có ít nhất một mục trong mảng phù hợp - nhưng sẽ không lọc ra những mục không phù hợp. Bạn phải phức tạp hơn một chút để thực hiện việc này trong một lần chụp:

db.foo.aggregate([
// Make sure at *least* one label has a remark of DATA NOT FOUND;
// otherwise, the $filter trick in the next stage yields a labels array
// of length 0 (which is not horrible).  Also, this is a good place to
// add other $match criteria, possibly index-optimized, to shrink down the
// size of response set:
{$match: {"divisionIn.sections.labels.remarks":"DATA NOT FOUND"}}

,{$project: {
        // Copy over the main doc level things we want:
        projectDR: "$projectDR",
        code: "$code",
        status: "$status"

        // divisionIn is a map, not an array, so we can dive down using dot notation
        // and make a new sections array called divSections that will ONLY have
        // DATA NOT FOUND: 
        divSections: {$map: {input: "$divisionIn.sections", as:"z", in:
            {
                // Again, copy over things we want to keep; may not need all of them
                "sectionNumber": "$$z.sectionNumber",
                "sectionName": "$$z.sectionName",

                // The Juice: Copy BUT FILTER the labels field conditionally based on
                // the value of labels.remarks:
                "labels": {$filter: {input: "$$z.labels",
                             as: "z2",
                             cond: {$eq: [ "$$z2.remarks", "DATA NOT FOUND"] }
                    }}
            }
            }}
    }}

                       ]);



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Facebook user_id là MongoDB BSON ObjectId?

  2. Lớp được tạo Mapstruct sử dụng trình tạo Lombok từ cha thay vì con

  3. Jackson không thể deserialize đối tượng MongoDB được truyền qua REST

  4. Cập nhật Nhiều nếu tồn tại, nếu không, hãy tạo cho mỗi LeadId không tồn tại một Tài liệu mới

  5. Làm thế nào để đọc dữ liệu vào Tensorflow?