2
我需要重新梳理我的集合方式:排序复杂对象的问题
db.collection.find().sort({'stp.KEY1':1})
{ "_id" : ObjectId("5241eb2ed8b991543d931eee"), "stp" : [ { "KEY2" : 5 }, { "KEY1" : 500 } ] }
{ "_id" : ObjectId("521ef6e6d7b99105020cb0b9"), "stp" : [ { "KEY2" : 5 }, { "KEY1" : 1000 } ] }
{ "_id" : ObjectId("522dd25fd8b9912822498a62"), "stp" : [ { "KEY3" : 1000 }, { "KEY1" : 1000 } ] }
{ "_id" : ObjectId("5243fb6ed8b991641ef6a5b9"), "stp" : [ { "KEY1" : 300 } ] }
{ "_id" : ObjectId("5243fbb2d8b991651ea98477"), "stp" : [ { "KEY1" : 500 } ] }
{ "_id" : ObjectId("5245611bd7b991d87cb3ec3c"), "stp" : [ { "KEY1" : 1000 } ] }
是否有人有一个秘密武器来做到这一点?
谢谢,
这很奇怪,应该工作,如果我使用'{'stp.KEY1':-1}'反向排序,而不是_does_工作。 – JohnnyHK
你是否认为它的作品降序而不是升序? –
现在我记得它为什么如此行事:当您按数组中的字段升序排序时,文档将使用每个文档元素的最小值进行排序。因为前三个文档中的第一个元素没有“KEY1”字段,所以这些字段是第一个。当你降序排序时,它取所有元素的最大值,以便其丢失的元素不会影响它。 – JohnnyHK