Details
-
Bug
-
Resolution: Duplicate
-
Major - P3
-
None
-
4.0.4
-
Windows Server 2016
MongoDB 4.0.4
-
Fully Compatible
-
ALL
Description
I was working with mongo db on my project for quite some time using test pre-generated data, until i insert this record, and i found something strange, the data returned in middle of list...?
shouldn't it be sorted? shouldn't it comes last or first? in inserted order... after some search i found that the data my return in any order and i need to sort it...
so i did the sorting at one of beginning stage, before $lookup, but still it was wrong, i move it to last, and it worked, so i push sort down stage by stage, until i caught it causing trouble at one of the middle stages, right before $group stage...
but the issue is not grouping, it is that i group by _id... fixing one of my issue that you may had another answer for it, but i did it this way... and now i found $group guilty.
In trivial way, the _id is one (I mean there is no duplication version), and it scan in order, shouldn't it result in order too?
Generated by Studio 3T
// Requires official MongoShell 3.6+
|
use realEstate;
|
db.getCollection("basePlace").aggregate( |
[
|
{
|
"$lookup" : { |
"from" : "humanResource.user", |
"localField" : "UserId", |
"foreignField" : "_id", |
"as" : "User" |
}
|
},
|
{
|
"$unwind" : { |
"path" : "$User", |
"preserveNullAndEmptyArrays" : true |
}
|
},
|
{
|
"$addFields" : { |
"User.ProfilePictures" : { |
"$map" : { |
"input" : "$User.ProfilePictures", |
"as" : "pp", |
"in" : { |
"ImageId" : "$$pp.ImageId", |
"CloudinaryUrl" : "$$pp.CloudinarySecureUrl", |
"IsMain" : "$$pp.IsMain", |
"Title" : "$$pp.Title", |
"Description" : "$pp.Description" |
}
|
}
|
},
|
"Images" : { |
"$map" : { |
"input" : "$Images", |
"as" : "pp", |
"in" : { |
"ImageId" : "$$pp.ImageId", |
"CloudinaryUrl" : "$$pp.CloudinarySecureUrl", |
"IsMain" : "$$pp.IsMain", |
"Title" : "$$pp.Title", |
"Description" : "$pp.Description" |
}
|
}
|
},
|
"Maps" : { |
"$map" : { |
"input" : "$Maps", |
"as" : "pp", |
"in" : { |
"ImageId" : "$$pp.ImageId", |
"CloudinaryUrl" : "$$pp.CloudinarySecureUrl", |
"IsMain" : "$$pp.IsMain", |
"Title" : "$$pp.Title", |
"Description" : "$pp.Description" |
}
|
}
|
}
|
}
|
},
|
{
|
"$addFields" : { |
"User.ProfilePictures" : { |
"$cond" : [ |
{
|
"$and" : [ |
{
|
"$ne" : [ |
"User.ProfilePictures", |
undefined
|
]
|
},
|
{
|
"$ne" : [ |
"User.ProfilePictures", |
null |
]
|
}
|
]
|
},
|
{
|
"$cond" : [ |
{
|
"$ne" : [ |
{
|
"$indexOfArray" : [ |
"$User.ProfilePictures.IsMain", |
true |
]
|
},
|
-1.0 |
]
|
},
|
{
|
"$arrayElemAt" : [ |
"$User.ProfilePictures", |
{
|
"$indexOfArray" : [ |
"$User.ProfilePictures.IsMain", |
true |
]
|
}
|
]
|
},
|
{
|
"$arrayElemAt" : [ |
"$User.ProfilePictures", |
0.0 |
]
|
}
|
]
|
},
|
null |
]
|
},
|
"Images" : { |
"$cond" : [ |
{
|
"$and" : [ |
{
|
"$ne" : [ |
"Images", |
undefined
|
]
|
},
|
{
|
"$ne" : [ |
"Images", |
null |
]
|
}
|
]
|
},
|
{
|
"$cond" : [ |
{
|
"$ne" : [ |
{
|
"$indexOfArray" : [ |
"$Images.IsMain", |
true |
]
|
},
|
-1.0 |
]
|
},
|
{
|
"$arrayElemAt" : [ |
"$Images", |
{
|
"$indexOfArray" : [ |
"$Images.IsMain", |
true |
]
|
}
|
]
|
},
|
{
|
"$arrayElemAt" : [ |
"$Images", |
0.0 |
]
|
}
|
]
|
},
|
null |
]
|
},
|
"Maps" : { |
"$cond" : [ |
{
|
"$and" : [ |
{
|
"$ne" : [ |
"Maps", |
undefined
|
]
|
},
|
{
|
"$ne" : [ |
"Maps", |
null |
]
|
}
|
]
|
},
|
{
|
"$cond" : [ |
{
|
"$ne" : [ |
{
|
"$indexOfArray" : [ |
"$Maps.IsMain", |
true |
]
|
},
|
-1.0 |
]
|
},
|
{
|
"$arrayElemAt" : [ |
"$Maps", |
{
|
"$indexOfArray" : [ |
"$Maps.IsMain", |
true |
]
|
}
|
]
|
},
|
{
|
"$arrayElemAt" : [ |
"$Maps", |
0.0 |
]
|
}
|
]
|
},
|
null |
]
|
}
|
}
|
},
|
{
|
"$sort" : { |
"_id" : -1.0 |
}
|
},
|
{
|
"$group" : { |
"_id" : "$_id", |
"Images" : { |
"$push" : "$Images" |
},
|
"Maps" : { |
"$push" : "$Maps" |
},
|
"allData" : { |
"$first" : "$$ROOT" |
}
|
}
|
},
|
{
|
"$addFields" : { |
"allData.Images" : "$Images", |
"allData.Maps" : "$Maps" |
}
|
},
|
{
|
"$replaceRoot" : { |
"newRoot" : "$allData" |
}
|
}
|
],
|
{
|
"allowDiskUse" : false |
}
|
);
|
|
Attachments
Issue Links
- duplicates
-
SERVER-24799 $group aggregation command should maintain document order
-
- Closed
-
- is duplicated by
-
SERVER-43030 sort before group, without changing key...
-
- Closed
-