-
Notifications
You must be signed in to change notification settings - Fork 0
/
q3.js
88 lines (88 loc) · 1.46 KB
/
q3.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
db.hotelSearch.aggregate([
{
$geoNear: {
near: {
type: "Point",
coordinates: [
12.496366,
41.902782
]
},
distanceField: "dist.calculated",
maxDistance: 10000,
spherical: true
}
},
{
$match: {
"address.countryCode": "IT",
"address.postalCode": {
$in: [
"00136",
"00141",
"00198",
"00146",
"00147",
"00153",
"00155",
"00156",
"00158",
"00159",
"00161",
"00164",
"00165",
"00172",
"00176",
"00182",
"00183",
"00184",
"00185",
"00186",
"00187",
"00192",
"00193",
"00197"
]
},
amenityCodes: {
$all: [
"RMA.95",
"RMA.13"
]
}
}
},
{
$limit: 100
},
{
$group: {
_id: {
"physicalHotel": "$dupeId",
"distance": "$dist.calculated",
"name": "$hotelName",
"amenities": "$amenityCodes"
},
offersCount: {
$sum: 1
},
hotels: {
$push: {
provider: {
$concat: [
"$chainCode",
"-",
"$iataCode"
]
},
property: "$propertyId"
}
}
}
},
{
$sort: {
"_id.distance": 1
}
}
])