हो सकता है कि बलो वही हो जो आप चाहते हैं।
1) काउंटर के साथ एक संग्रह बनाएं उदाहरण के लिए यहां 10 दिनों के लिए 1-10
[
{
"date": 0
},
{
"date": 1
},
{
"date": 2
},
{
"date": 3
},
{
"date": 4
},
{
"date": 5
},
{
"date": 6
},
{
"date": 7
},
{
"date": 8
},
{
"date": 9
}
]
- इस संग्रह को अपडेट करें और डेटा बनाएं, $add का उपयोग करके 10 तिथियां यहां हम दिनांक "2021-08-01T00:00:00+00:00" से प्रारंभ करते हैं और हम दिनांक "2021-08-10T00:00:00" को समाप्त करेंगे +00:00"
यह अपडेट यह करेगा (क्यू =फिल्टर, यू =अपडेट, यहां इसकी पाइपलाइन अपडेट)
{
"update": "dates",
"updates": [
{
"q": {},
"u": [
{
"$addFields": {
"date": {
"$add": [
"2021-08-01T00:00:00Z",
{
"$multiply": [
"$date",
24,
60,
60000
]
}
]
}
}
}
],
"multi": true
}
]
}
में परिणाम (10 तिथियां, 1 दिन का अंतर)
{
"_id": {
"$oid": "610c4bf99ccb15d9c9d67b55"
},
"date": {
"$date": "2021-08-01T00:00:00Z"
}
},{
"_id": {
"$oid": "610c4bf99ccb15d9c9d67b56"
},
"date": {
"$date": "2021-08-02T00:00:00Z"
}
},{
"_id": {
"$oid": "610c4bf99ccb15d9c9d67b57"
},
"date": {
"$date": "2021-08-03T00:00:00Z"
}
}
...
3) अब हमारे पास 10 तारीखों के साथ तारीखों का संग्रह है, सभी 1 दिन के अंतर के साथ हम ऑर्डर संग्रह के साथ $लुकअप करेंगे
आदेश संग्रह
[
{
"_id": 1,
"date": "2021-08-01T00:00:00Z"
},
{
"_id": 2,
"date": "2021-08-01T00:00:00Z"
},
{
"_id": 3,
"date": "2021-08-05T00:00:00Z"
},
{
"_id": 4,
"date": "2021-08-03T00:00:00Z"
}
]
क्वेरी (पाइपलाइन लें, पहले वांछित तिथियों को फ़िल्टर करें, और फिर उसी दिन ऑर्डर करने पर ही शामिल हों)
{
"aggregate": "dates",
"pipeline": [
{
"$match": {
"$expr": {
"$and": [
{
"$gte": [
"$date",
{
"$dateFromString": {
"dateString": "2021-08-01T00:00:00"
}
}
]
},
{
"$lte": [
"$date",
{
"$dateFromString": {
"dateString": "2021-08-05T00:00:00"
}
}
]
}
]
}
}
},
{
"$lookup": {
"from": "orders",
"let": {
"datesDate": "$date"
},
"pipeline": [
{
"$match": {
"$expr": {
"$eq": [
{
"$dateToString": {
"format": "%Y-%m-%d",
"date": "$$datesDate"
}
},
{
"$dateToString": {
"format": "%Y-%m-%d",
"date": "$date"
}
}
]
}
}
}
],
"as": "found-orders"
}
},
{
"$project": {
"_id": 0
}
}
],
"cursor": {},
"maxTimeMS": 1200000
}
परिणाम
[
{
"date": "2021-08-01T00:00:00Z",
"found-orders": [
{
"_id": 1,
"date": "2021-08-01T00:00:00Z"
},
{
"_id": 2,
"date": "2021-08-01T00:00:00Z"
}
]
},
{
"date": "2021-08-02T00:00:00Z",
"found-orders": []
},
{
"date": "2021-08-03T00:00:00Z",
"found-orders": [
{
"_id": 4,
"date": "2021-08-03T00:00:00Z"
}
]
},
{
"date": "2021-08-04T00:00:00Z",
"found-orders": []
},
{
"date": "2021-08-05T00:00:00Z",
"found-orders": [
{
"_id": 3,
"date": "2021-08-05T00:00:00Z"
}
]
}
]
यह प्रत्येक तिथि (प्रत्येक दिन के लिए) के लिए, उस दिन किए गए आदेशों को देता है। यदि एक तारीख को कोई आदेश नहीं दिया गया तो सरणी खाली है। यहां केवल 10 दिन हैं, आप अपनी आवश्यकताओं के आधार पर 5 साल की तारीख का संग्रह कर सकते हैं।