차이별로 정렬하려면 MongoDB에서 집계()를 사용하십시오. 문서로 컬렉션을 만들자 −
> db.demo155.insertOne({"Scores":[{"Value":45},{"Value":50}]}); { "acknowledged" : true, "insertedId" : ObjectId("5e354584fdf09dd6d08539e3") } > db.demo155.insertOne({"Scores":[{"Value":60},{"Value":10}]}); { "acknowledged" : true, "insertedId" : ObjectId("5e35458efdf09dd6d08539e4") } > db.demo155.insertOne({"Scores":[{"Value":100},{"Value":95}]}); { "acknowledged" : true, "insertedId" : ObjectId("5e354599fdf09dd6d08539e5") }
find() 메서드를 사용하여 컬렉션의 모든 문서 표시 -
> db.demo155.find();
이것은 다음과 같은 출력을 생성합니다 -
{ "_id" : ObjectId("5e354584fdf09dd6d08539e3"), "Scores" : [ { "Value" : 45 }, { "Value" : 50 } ] } { "_id" : ObjectId("5e35458efdf09dd6d08539e4"), "Scores" : [ { "Value" : 60 }, { "Value" : 10 } ] } { "_id" : ObjectId("5e354599fdf09dd6d08539e5"), "Scores" : [ { "Value" : 100 }, { "Value" : 95 } ] }
다음은 MongoDB에서 배열 내용의 차이로 정렬하는 쿼리입니다 -
> db.demo155.aggregate([ ... { "$match": { "Scores.1": { "$exists": true } } }, ... { "$project": { ... "Scores": "$Scores", ... "sub": { ... "$let": { ... "vars": { ... "f": { "$arrayElemAt": [ "$Scores", -2 ] }, ... "l": { "$arrayElemAt": [ "$Scores", -1 ] } ... }, ... "in": { "$subtract": [ "$$l.Value", "$$f.Value" ] } ... } ... } ... }}, ... { "$sort": { "sub": -1 } } ... ])
이것은 다음과 같은 출력을 생성합니다 -
{ "_id" : ObjectId("5e354584fdf09dd6d08539e3"), "Scores" : [ { "Value" : 45 }, { "Value" : 50 } ], "sub" : 5 } { "_id" : ObjectId("5e354599fdf09dd6d08539e5"), "Scores" : [ { "Value" : 100 }, { "Value" : 95 } ], "sub" : -5 } { "_id" : ObjectId("5e35458efdf09dd6d08539e4"), "Scores" : [ { "Value" : 60 }, { "Value" : 10 } ], "sub" : -50 }