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

Phù hợp với hai trường khác nhau trong Mongoose, Aggregate?

Bạn có thể sử dụng tổng hợp sau:

db.col.aggregate([
    {
        $addFields: {
            weightedIds: {
              $map:
                 {
                   input: "$weighted",
                   as: "w",
                   in: "$$w.phaseId"
                 }
            }
        }
    },
    {
      $project: {
        _id: 1,
        weighted: 1,
        phases: {
            $filter: {
             input: "$phases",
             as: "phase",
             cond: { $gte: [ { $indexOfArray: [ "$weightedIds" , "$$phase._id" ] }, 0 ] }
            }
        }
      }
    }
])

Chúng tôi đang sử dụng $map chỉ lấy phaseId trường weighted và sau đó chúng tôi có thể lọc ra các giai đoạn phases sử dụng $ filter kiểm tra từng giai đoạn xem có id tương ứng hay không tồn tại (sử dụng $ indexOfArray mà trả về -1 nếu không))




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Trello lưu trữ dữ liệu trong MongoDB như thế nào? (Bộ sưu tập mỗi bảng?)

  2. Tạo script để tạo bộ sưu tập MongoDB từ Mongo shell?

  3. Những cách tốt để có được thông tin chi tiết về người dùng hiện tại trong các mô hình là gì?

  4. tăng tốc độ tra cứu văn bản ký tự đại diện

  5. MongoDB deleteMany ()