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

Sắp xếp các bản ghi theo cách nào để chỉ các bản ghi phù hợp với id đứng trước?

Tôi không nghĩ rằng có bất kỳ cách nào dễ dàng để làm điều này, nếu bạn thực sự muốn thì hãy thử $cond nhà điều hành để kiểm tra tình trạng trên trường cụ thể,

  • thêm trường mới matchResult trong $project nó sẽ kiểm tra createdBy đang khớp với trả về 1 nếu không thì 0,
  • $sort bởi matchResult theo thứ tự giảm dần
const [messages, messageCount] = await Promise.all([
    MessageModel.aggregate([
        { $match: params },
        {
            $project: {
                ...filterObject,
                matchResult: {
                    $cond: [
                      { $eq: ["$createdBy", ObjectId("abcff9ef71fa048cea3c8a97")] },
                      1,
                      0
                    ]
                }
            }
        },
        { $sort: { matchResult: -1 } },
        { $skip: ctx.paginate.skip },
        { $limit: ctx.query.limit }
    ]),
    MessageModel.countDocuments(params),
]);

Sân chơi

Tùy chọn thứ hai là $ regexMatch toán tử tổng hợp bắt đầu từ MongoDB v4.2,

Sân chơi




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để lấy giá trị chuỗi của MongoID bằng PHP?

  2. Chuyển các bộ sưu tập MongoDB lớn sang data.frame trong R với rmongodb và plyr

  3. MongoDB có thể được đóng gói trong một ứng dụng Electron không?

  4. MongoDB:locale ::facet ::_ Tên S_create_c_locale không hợp lệ

  5. MongoDB - Đối số cho $ size phải là một Mảng, nhưng thuộc loại:EOO / thiếu