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

Dữ liệu điền vào MongoDB không có trong kết quả truy vấn

Có thể thực hiện được thông qua $range để tạo một phạm vi và tự tra cứu

các bước

  1. $group - tự động tìm ngày tối thiểu và ngày tối đa, mã cứng nếu cần
  2. $project - tạo $range , dựa trên mã tối thiểu và tối đa, mã cứng nếu được yêu cầu
  3. $unwind - giải phóng phạm vi vào tài liệu
  4. $project - tạo ngày theo số được tạo
  5. $lookup - tự tham gia với bộ sưu tập dựa trên ngày
  6. $project - nếu tìm thấy kết quả phù hợp, số lượng trả về khác thì 0. thay đổi $ifNull tới $cond nếu phiên bản mongo nhỏ hơn 3.6

đường ống tổng hợp

db.t.aggregate(
    [   
        {
            $group : { _id : null, startDate : { "$min" : "$date" }, endDate : { "$max" : "$date" }} 
        },
        {
            $project : { _id : 0 , startDate : 1,  genNo : { $range : [ { $add : [ {"$dayOfMonth" : "$startDate"}, -1 ] }, { $add : [ {"$dayOfMonth" : "$endDate"} , 1 ] } ] } }
        },
        {
            $unwind : "$genNo"
        },
        {
            $project : { genDate : { $add : [ "$startDate", { $multiply : [ "$genNo" , 86400000 ] } ] } }
        },
        {
            $lookup : {
                from : "t",
                localField : "genDate",
                foreignField : "date",
                as : "out"
            }
        },
        {
            $project : { date : "$genDate", count : { $ifNull : [ { $arrayElemAt : ["$out.count", 0 ] }, 0 ] } }
        }
    ]
)

bộ sưu tập

> db.t.find()
{ "_id" : ObjectId("5a5d78d5423b9839ce07bd77"), "date" : ISODate("2018-01-01T00:00:00Z"), "count" : 3 }
{ "_id" : ObjectId("5a5d78d5423b9839ce07bd78"), "date" : ISODate("2018-01-04T00:00:00Z"), "count" : 5 }
> 

kết quả tổng hợp

{ "date" : ISODate("2018-01-01T00:00:00Z"), "count" : 3 }
{ "date" : ISODate("2018-01-02T00:00:00Z"), "count" : 0 }
{ "date" : ISODate("2018-01-03T00:00:00Z"), "count" : 0 }
{ "date" : ISODate("2018-01-04T00:00:00Z"), "count" : 5 }
{ "date" : ISODate("2018-01-05T00:00:00Z"), "count" : 0 }
> 



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB tổng hợp các đường ống với đối tượng được liên kết

  2. Lưu trữ một hàm trên máy chủ bằng Java - MongoDB

  3. MongoDB / PHP:xóa phần tử khỏi mảng

  4. Cuộc chiến của các cơ sở dữ liệu NoSQL - So sánh các chức năng NoSQL của MongoDB và MSSQL

  5. MongoDB c # truy xuất tất cả các phần tử phù hợp trong một mảng trong tài liệu bằng trình tạo Định nghĩa